-- Messaging system tied to projects CREATE TABLE IF NOT EXISTS `messages` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `project_id` INT NOT NULL, `user_id` INT NOT NULL, `message` TEXT NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE CASCADE, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Calendar events CREATE TABLE IF NOT EXISTS `calendar_events` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `title` VARCHAR(255) NOT NULL, `start_event` DATETIME NOT NULL, `end_event` DATETIME NOT NULL, `project_id` INT, `user_id` INT, `description` TEXT, FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE CASCADE, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Approvals for assets CREATE TABLE IF NOT EXISTS `approvals` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `asset_id` INT NOT NULL, `user_id` INT NOT NULL, `status` ENUM('Pending', 'Approved', 'Rejected') NOT NULL DEFAULT 'Pending', `comments` TEXT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (`asset_id`) REFERENCES `assets`(`id`) ON DELETE CASCADE, FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Metrics from ad platforms CREATE TABLE IF NOT EXISTS `metrics` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `project_id` INT NOT NULL, `platform` VARCHAR(50) NOT NULL, -- e.g., 'Facebook', 'Google Ads' `date` DATE NOT NULL, `impressions` INT, `clicks` INT, `conversions` INT, `spend` DECIMAL(10, 2), `engagement` INT, `reach` INT, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY `project_platform_date` (`project_id`, `platform`, `date`), FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Secure storage for API tokens CREATE TABLE IF NOT EXISTS `api_tokens` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `service` VARCHAR(50) NOT NULL UNIQUE, -- e.g., 'meta_ads', 'google_ads' `access_token` TEXT NOT NULL, `refresh_token` TEXT, `expires_at` TIMESTAMP, `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;