```sql -- Users Table CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, phone VARCHAR(11) UNIQUE NOT NULL, email VARCHAR(255) UNIQUE, password_hash VARCHAR(255) NOT NULL, verified BOOLEAN DEFAULT FALSE, age_verified BOOLEAN DEFAULT FALSE, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, last_login TIMESTAMP WITH TIME ZONE, status VARCHAR(20) DEFAULT 'active' CHECK (status IN ('active', 'suspended', 'banned')) ); -- Wallet Transactions Table CREATE TABLE wallet_transactions ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, amount DECIMAL(12,2) NOT NULL, transaction_type VARCHAR(20) NOT NULL CHECK (transaction_type IN ('deposit', 'withdrawal', 'win', 'bet', 'bonus', 'penalty')), payment_method VARCHAR(20), status VARCHAR(20) DEFAULT 'pending' CHECK (status IN ('pending', 'completed', 'failed', 'reversed')), reference_id VARCHAR(255), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, processed_at TIMESTAMP WITH TIME ZONE, notes TEXT ); -- Game History Table CREATE TABLE game_history ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, game_type VARCHAR(50) NOT NULL, bet_amount DECIMAL(12,2) NOT NULL, win_amount DECIMAL(12,2), outcome VARCHAR(20) CHECK (outcome IN ('win', 'loss', 'draw', 'pending')), game_details JSONB, session_id VARCHAR(100), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, completed_at TIMESTAMP WITH TIME ZONE ); -- Responsible Gaming Settings Table CREATE TABLE responsible_gaming_settings ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, deposit_limit_daily DECIMAL(12,2) DEFAULT 5000.00, deposit_limit_weekly DECIMAL(12,2) DEFAULT 20000.00, deposit_limit_monthly DECIMAL(12,2) DEFAULT 50000.00, loss_limit_daily DECIMAL(12,2), loss_limit_weekly DECIMAL(12,2), session_time_limit_minutes INTEGER DEFAULT 60, self_exclusion BOOLEAN DEFAULT FALSE, self_exclusion_start TIMESTAMP WITH TIME ZONE, self_exclusion_end TIMESTAMP WITH TIME ZONE, cooling_off_period_days INTEGER, reality_check_minutes INTEGER DEFAULT 60, last_updated TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Indexes for better performance CREATE INDEX idx_wallet_transactions_user_id ON wallet_transactions(user_id); CREATE INDEX idx_wallet_transactions_created_at ON wallet_transactions(created_at); CREATE INDEX idx_game_history_user_id ON game_history(user_id); CREATE INDEX idx_game_history_created_at ON game_history(created_at); CREATE UNIQUE INDEX idx_responsible_gaming_user_id ON responsible_gaming_settings(user_id); ``` ___METADATA_START___ {"repoId":"azimpolcu/dhaka-dice-dynamo","isNew":false,"userName":"azimpolcu"} ___METADATA_END___