35089-vm/db/migrations/004_create_extended_portal_tables.sql
Flatlogic Bot 23be5a5236 Version 2
2025-10-21 23:39:12 +00:00

64 lines
2.4 KiB
SQL

-- 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;