feat: poll/voting system with live results and bar charts

This commit is contained in:
2026-07-13 21:37:16 +08:00
parent eed4591059
commit 116fe89ac8
6 changed files with 173 additions and 0 deletions

View File

@@ -179,6 +179,27 @@ async function initSchema(connection) {
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
await createIfNotExists('polls', `CREATE TABLE polls (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
description TEXT,
options JSON NOT NULL,
active TINYINT(1) NOT NULL DEFAULT 1,
created_by INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_active (active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
await createIfNotExists('poll_votes', `CREATE TABLE poll_votes (
id INT AUTO_INCREMENT PRIMARY KEY,
poll_id INT NOT NULL,
user_id INT NOT NULL,
option_index INT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_poll_user (poll_id, user_id),
INDEX idx_poll (poll_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`);
await createIfNotExists('audit_logs', `CREATE TABLE audit_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,