feat: add modal shop and lottery management

This commit is contained in:
ngfchl
2026-07-07 13:22:33 +08:00
parent a6923924e7
commit 2ee9fc575c
11 changed files with 933 additions and 55 deletions
+20
View File
@@ -51,6 +51,21 @@ async def ensure_runtime_schema():
UNIQUE(chat_id, item_key)
);
CREATE INDEX IF NOT EXISTS idx_shop_items_chat_enabled ON shop_items(chat_id, enabled);
CREATE TABLE IF NOT EXISTS shop_transactions (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
chat_id BIGINT NOT NULL DEFAULT 0,
user_id BIGINT NOT NULL,
username VARCHAR(255) NULL,
item_key VARCHAR(50) NOT NULL,
item_name VARCHAR(255) NOT NULL,
cost INT NOT NULL DEFAULT 0,
status VARCHAR(30) NOT NULL DEFAULT 'success',
note VARCHAR(500) NULL
);
CREATE INDEX IF NOT EXISTS idx_shop_transactions_chat_created ON shop_transactions(chat_id, created_at);
CREATE INDEX IF NOT EXISTS idx_shop_transactions_chat_user ON shop_transactions(chat_id, user_id);
CREATE TABLE IF NOT EXISTS lottery_events (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
@@ -78,6 +93,11 @@ async def ensure_runtime_schema():
username VARCHAR(255) NULL,
first_name VARCHAR(255) NULL
);
ALTER TABLE lottery_events ADD COLUMN IF NOT EXISTS title VARCHAR(255) NULL;
ALTER TABLE lottery_events ADD COLUMN IF NOT EXISTS description TEXT NULL;
ALTER TABLE lottery_events ADD COLUMN IF NOT EXISTS draw_type VARCHAR(50) NOT NULL DEFAULT 'people';
ALTER TABLE lottery_events ADD COLUMN IF NOT EXISTS draw_at TIMESTAMPTZ NULL;
ALTER TABLE lottery_events ADD COLUMN IF NOT EXISTS max_participants INT NOT NULL DEFAULT 0;
CREATE INDEX IF NOT EXISTS idx_lottery_events_chat_status ON lottery_events(chat_id, status);
CREATE INDEX IF NOT EXISTS idx_lottery_participants_event_user ON lottery_participants(event_id, user_id);
""")