34607-vm/db/migrations/004_add_features_tables.sql
Flatlogic Bot 34236e9979 1.0.0
2025-10-03 03:24:30 +00:00

60 lines
2.5 KiB
SQL

-- Monetization & Content Strategy
ALTER TABLE `courses`
ADD COLUMN `tier` ENUM('free', 'premium') NOT NULL DEFAULT 'free' AFTER `description`,
ADD COLUMN `price` DECIMAL(10, 2) DEFAULT NULL AFTER `tier`,
ADD COLUMN `type` ENUM('course', 'micro-lesson') NOT NULL DEFAULT 'course' AFTER `price`;
-- Scalability & Compliance
ALTER TABLE `users`
ADD COLUMN `language` VARCHAR(5) NOT NULL DEFAULT 'en' AFTER `email`,
ADD COLUMN `parental_controls_enabled` BOOLEAN NOT NULL DEFAULT FALSE AFTER `language`;
-- Community & Engagement: Gamification
CREATE TABLE IF NOT EXISTS `badges` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
`icon` VARCHAR(255) -- e.g., path to an image or a font-awesome class
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `user_badges` (
`user_id` INT NOT NULL,
`badge_id` INT NOT NULL,
`awarded_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`, `badge_id`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`badge_id`) REFERENCES `badges`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Community & Engagement: Discussion Boards
CREATE TABLE IF NOT EXISTS `discussion_forums` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`course_id` INT DEFAULT NULL, -- Can be null for general forums
`title` VARCHAR(255) NOT NULL,
`description` TEXT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `discussion_threads` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`forum_id` INT NOT NULL,
`user_id` INT NOT NULL,
`title` VARCHAR(255) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`forum_id`) REFERENCES `discussion_forums`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `discussion_posts` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`thread_id` INT NOT NULL,
`user_id` INT NOT NULL,
`parent_post_id` INT DEFAULT NULL, -- For replies
`content` TEXT NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`thread_id`) REFERENCES `discussion_threads`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`parent_post_id`) REFERENCES `discussion_posts`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;