Move CMS SQL to drizzle/migrations, drop prisma packages/schema, wire drizzle-kit scripts, and regenerate schema names from src/db/schema.ts. Co-authored-by: Cursor <[email protected]>
137 lines
6.8 KiB
SQL
137 lines
6.8 KiB
SQL
CREATE TABLE IF NOT EXISTS `website_event_types` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(100) NOT NULL,
|
|
`slug` VARCHAR(100) NOT NULL,
|
|
`description` VARCHAR(500) NOT NULL DEFAULT '',
|
|
`color` VARCHAR(20) NOT NULL DEFAULT '#3b82f6',
|
|
`icon` VARCHAR(50) NOT NULL DEFAULT 'calendar',
|
|
`is_active` INTEGER NOT NULL DEFAULT 1,
|
|
`min_rank` INTEGER NOT NULL DEFAULT 0,
|
|
UNIQUE INDEX `website_event_types_slug_key`(`slug`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_events` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`title` VARCHAR(255) NOT NULL,
|
|
`description` TEXT NOT NULL,
|
|
`type_id` INTEGER NOT NULL,
|
|
`host_user_id` INTEGER NOT NULL,
|
|
`room_id` INTEGER NULL,
|
|
`starts_at` DATETIME(3) NOT NULL,
|
|
`ends_at` DATETIME(3) NULL,
|
|
`max_players` INTEGER NULL,
|
|
`is_recurring` INTEGER NOT NULL DEFAULT 0,
|
|
`recurrence_rule` VARCHAR(255) NULL,
|
|
`status` VARCHAR(20) NOT NULL DEFAULT 'draft',
|
|
`image` VARCHAR(500) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
INDEX `website_events_type_id_idx`(`type_id`),
|
|
INDEX `website_events_host_user_id_idx`(`host_user_id`),
|
|
INDEX `website_events_starts_at_idx`(`starts_at`),
|
|
INDEX `website_events_status_idx`(`status`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_events_type_id_fkey` FOREIGN KEY (`type_id`) REFERENCES `website_event_types`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_event_registrations` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`event_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
INDEX `website_event_registrations_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `website_event_registrations_event_id_user_id_key`(`event_id`, `user_id`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_event_registrations_event_id_fkey` FOREIGN KEY (`event_id`) REFERENCES `website_events`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_event_prizes` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`event_id` INTEGER NOT NULL,
|
|
`position` INTEGER NOT NULL DEFAULT 1,
|
|
`prize_type` VARCHAR(20) NOT NULL DEFAULT 'badge',
|
|
`badge_code` VARCHAR(50) NULL,
|
|
`credits` INTEGER NOT NULL DEFAULT 0,
|
|
`pixels` INTEGER NOT NULL DEFAULT 0,
|
|
`points` INTEGER NOT NULL DEFAULT 0,
|
|
`item_id` INTEGER NULL,
|
|
`description` VARCHAR(255) NOT NULL DEFAULT '',
|
|
INDEX `website_event_prizes_event_id_idx`(`event_id`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_event_prizes_event_id_fkey` FOREIGN KEY (`event_id`) REFERENCES `website_events`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_event_winners` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`event_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`position` INTEGER NOT NULL DEFAULT 1,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
INDEX `website_event_winners_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `website_event_winners_event_id_user_id_key`(`event_id`, `user_id`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_event_winners_event_id_fkey` FOREIGN KEY (`event_id`) REFERENCES `website_events`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_polls` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`title` VARCHAR(255) NOT NULL,
|
|
`description` TEXT NULL,
|
|
`status` VARCHAR(20) NOT NULL DEFAULT 'draft',
|
|
`show_results` INTEGER NOT NULL DEFAULT 1,
|
|
`multiple_choice` INTEGER NOT NULL DEFAULT 0,
|
|
`starts_at` DATETIME(3) NULL,
|
|
`ends_at` DATETIME(3) NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
INDEX `website_polls_status_idx`(`status`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_poll_questions` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`poll_id` INTEGER NOT NULL,
|
|
`question` VARCHAR(500) NOT NULL,
|
|
`type` VARCHAR(20) NOT NULL DEFAULT 'single',
|
|
`sort_order` INTEGER NOT NULL DEFAULT 0,
|
|
`options` TEXT NOT NULL,
|
|
INDEX `website_poll_questions_poll_id_idx`(`poll_id`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_poll_questions_poll_id_fkey` FOREIGN KEY (`poll_id`) REFERENCES `website_polls`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_poll_votes` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`question_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`answer` VARCHAR(500) NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
INDEX `website_poll_votes_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `website_poll_votes_question_id_user_id_key`(`question_id`, `user_id`),
|
|
PRIMARY KEY (`id`),
|
|
CONSTRAINT `website_poll_votes_question_id_fkey` FOREIGN KEY (`question_id`) REFERENCES `website_poll_questions`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `website_banners` (
|
|
`id` INT NOT NULL AUTO_INCREMENT,
|
|
`title` VARCHAR(255) NOT NULL DEFAULT '', `subtitle` VARCHAR(500) NOT NULL DEFAULT '',
|
|
`image` VARCHAR(500) NOT NULL DEFAULT '', `link` VARCHAR(500) NOT NULL DEFAULT '',
|
|
`color` VARCHAR(20) NOT NULL DEFAULT '', `is_active` INT NOT NULL DEFAULT 1,
|
|
`sort_order` INT NOT NULL DEFAULT 0, `start_date` VARCHAR(50) NULL, `end_date` VARCHAR(50) NULL,
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS `custom_prefixes` (
|
|
`id` INT NOT NULL AUTO_INCREMENT, `user_id` INT NOT NULL, `text` VARCHAR(50) NOT NULL,
|
|
`color` VARCHAR(255) NOT NULL DEFAULT '#FFFFFF', `icon` VARCHAR(50) NOT NULL DEFAULT '',
|
|
`effect` VARCHAR(50) NOT NULL DEFAULT '', `active` TINYINT(1) NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`), INDEX `idx_custom_prefix_user` (`user_id`, `active`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
CREATE TABLE IF NOT EXISTS `custom_prefix_blacklist` (
|
|
`id` INT NOT NULL AUTO_INCREMENT, `word` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_prefix_word` (`word`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
CREATE TABLE IF NOT EXISTS `custom_prefix_settings` (
|
|
`key` VARCHAR(100) NOT NULL, `value` TEXT NOT NULL, PRIMARY KEY (`key`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|