File size: 2,934 Bytes
a94c1a2
 
 
f780caf
 
 
 
 
 
 
 
 
 
a94c1a2
 
f780caf
 
 
 
 
 
 
 
 
 
 
 
a94c1a2
 
f780caf
a94c1a2
f780caf
 
 
 
 
 
 
 
 
 
a94c1a2
 
f780caf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a94c1a2
 
f780caf
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
```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___