apskel-pos-backend/migrations/000054_create_omset_tracker_table.up.sql

33 lines
1.3 KiB
MySQL
Raw Permalink Normal View History

2025-09-17 19:30:17 +07:00
CREATE TABLE omset_tracker (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
period_type VARCHAR(20) NOT NULL,
period_start DATE NOT NULL,
period_end DATE NOT NULL,
total BIGINT DEFAULT 0 NOT NULL,
game_id UUID,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
CONSTRAINT fk_omset_tracker_game
FOREIGN KEY (game_id)
REFERENCES games(id)
ON DELETE SET NULL,
CONSTRAINT chk_omset_tracker_period_type_valid
CHECK (period_type IN ('DAILY', 'WEEKLY', 'MONTHLY', 'TOTAL')),
CONSTRAINT chk_omset_tracker_total_non_negative
CHECK (total >= 0),
CONSTRAINT chk_omset_tracker_period_valid
CHECK (period_end >= period_start)
);
-- Create indexes
CREATE INDEX idx_omset_tracker_period_type ON omset_tracker(period_type);
CREATE INDEX idx_omset_tracker_period_start ON omset_tracker(period_start);
CREATE INDEX idx_omset_tracker_game_id ON omset_tracker(game_id);
CREATE INDEX idx_omset_tracker_created_at ON omset_tracker(created_at);
CREATE INDEX idx_omset_tracker_period_type_start ON omset_tracker(period_type, period_start);
CREATE INDEX idx_omset_tracker_game_period ON omset_tracker(game_id, period_type, period_start);