23 lines
1 KiB
SQL
23 lines
1 KiB
SQL
create table if not exists lottery_rounds (
|
|
id text primary key,
|
|
status text not null,
|
|
pool_minor bigint not null default 0 check (pool_minor >= 0),
|
|
winner_user_id text references users(id),
|
|
winner_account_id text references accounts(id),
|
|
draw_at timestamptz not null,
|
|
created_at timestamptz not null,
|
|
completed_at timestamptz
|
|
);
|
|
|
|
create table if not exists lottery_entries (
|
|
id text primary key,
|
|
round_id text not null references lottery_rounds(id) on delete cascade,
|
|
user_id text not null references users(id) on delete cascade,
|
|
account_id text not null references accounts(id) on delete cascade,
|
|
amount_minor bigint not null check (amount_minor > 0),
|
|
created_at timestamptz not null
|
|
);
|
|
|
|
create index if not exists idx_lottery_rounds_status_created_at on lottery_rounds(status, created_at desc);
|
|
create index if not exists idx_lottery_entries_round_id on lottery_entries(round_id, created_at asc);
|
|
create index if not exists idx_lottery_entries_user_id on lottery_entries(user_id, created_at desc);
|