CREATE TABLE customer_tokens ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), customer_id UUID NOT NULL, token_type VARCHAR(50) NOT NULL, balance BIGINT DEFAULT 0 NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), CONSTRAINT fk_customer_tokens_customer FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE, CONSTRAINT chk_customer_tokens_balance_non_negative CHECK (balance >= 0), CONSTRAINT chk_customer_tokens_type_valid CHECK (token_type IN ('SPIN', 'RAFFLE', 'MINIGAME')) ); CREATE INDEX idx_customer_tokens_customer_id ON customer_tokens(customer_id); CREATE INDEX idx_customer_tokens_token_type ON customer_tokens(token_type); CREATE INDEX idx_customer_tokens_updated_at ON customer_tokens(updated_at); CREATE UNIQUE INDEX idx_customer_tokens_unique_customer_type ON customer_tokens(customer_id, token_type);