-- Initial Schema for MagiCV -- Organizations table for multitenancy CREATE TABLE IF NOT EXISTS `organizations` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Users table with roles CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `organization_id` INT NULL, `email` VARCHAR(255) NOT NULL UNIQUE, `password` VARCHAR(255) NOT NULL, `role` ENUM('GUEST', 'FREE_USER', 'PRO_USER', 'SUPER_ADMIN') NOT NULL DEFAULT 'FREE_USER', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`organization_id`) REFERENCES `organizations`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Templates for CVs CREATE TABLE IF NOT EXISTS `templates` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `description` TEXT, `is_pro` BOOLEAN NOT NULL DEFAULT FALSE, `thumbnail_url` VARCHAR(255), `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- CVs table to store user resume data CREATE TABLE IF NOT EXISTS `cvs` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `user_id` INT NOT NULL, `template_id` INT, `title` VARCHAR(255) NOT NULL, `cv_data` JSON, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE, FOREIGN KEY (`template_id`) REFERENCES `templates`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;