Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-09-09 20:54:42 +02:00
parent 963342f858
commit eaee4d5f1c
6 changed files with 1843 additions and 12 deletions
+74
View File
@@ -133,3 +133,77 @@ CREATE TABLE IF NOT EXISTS `system_settings` (
`setting_value` TEXT NULL,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Fociz Kanban / Trello Borden, Lanes, Kaarten & Tijdspadkoppelingen
CREATE TABLE IF NOT EXISTS `boards` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR(255) NOT NULL,
`description` TEXT NULL,
`created_by_id` INT NOT NULL,
`is_archived` TINYINT(1) NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`created_by_id`),
CONSTRAINT `fk_boards_creator` FOREIGN KEY (`created_by_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `board_members` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`board_id` INT NOT NULL,
`user_id` INT NOT NULL,
`role` ENUM('ADMIN', 'MEMBER', 'VIEWER') NOT NULL DEFAULT 'MEMBER',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `uk_board_user` (`board_id`, `user_id`),
CONSTRAINT `fk_bmembers_board` FOREIGN KEY (`board_id`) REFERENCES `boards` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_bmembers_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `board_lanes` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`board_id` INT NOT NULL,
`title` VARCHAR(100) NOT NULL,
`color` VARCHAR(30) NOT NULL DEFAULT 'slate',
`position` INT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`board_id`, `position`),
CONSTRAINT `fk_blanes_board` FOREIGN KEY (`board_id`) REFERENCES `boards` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `board_cards` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`board_id` INT NOT NULL,
`lane_id` INT NOT NULL,
`title` VARCHAR(255) NOT NULL,
`description` TEXT NULL,
`assignee_id` INT NULL,
`priority` ENUM('P1', 'P2', 'P3') NOT NULL DEFAULT 'P2',
`color` VARCHAR(30) NOT NULL DEFAULT 'yellow',
`position` INT NOT NULL DEFAULT 0,
`created_by_id` INT NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`board_id`, `lane_id`, `position`),
INDEX (`assignee_id`),
CONSTRAINT `fk_bcards_board` FOREIGN KEY (`board_id`) REFERENCES `boards` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_bcards_lane` FOREIGN KEY (`lane_id`) REFERENCES `board_lanes` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_bcards_assignee` FOREIGN KEY (`assignee_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
CONSTRAINT `fk_bcards_creator` FOREIGN KEY (`created_by_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `board_card_schedules` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`card_id` INT NOT NULL,
`schedule_type` ENUM('SINGLE', 'DAILY_RANGE') NOT NULL DEFAULT 'SINGLE',
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL,
`start_time` VARCHAR(10) NOT NULL DEFAULT '14:00',
`end_time` VARCHAR(10) NOT NULL DEFAULT '15:00',
`days_of_week` VARCHAR(50) NULL DEFAULT '1,2,3,4,5',
`outlook_event_id` VARCHAR(255) NULL,
`outlook_synced_at` DATETIME NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `uk_sched_card` (`card_id`),
CONSTRAINT `fk_bsched_card` FOREIGN KEY (`card_id`) REFERENCES `board_cards` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;