62 lines
2.9 KiB
SQL
62 lines
2.9 KiB
SQL
-- Add work_plan_entries and work_plan_overrides tables plus the plan_category
|
|
-- enum. Both tables are owned by users (Cascade on delete) and reference
|
|
-- projects (SetNull). `created_by` uses Restrict so we never silently lose
|
|
-- the audit trail of who created the entry.
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `work_plan_entries` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`user_id` INTEGER NOT NULL,
|
|
`date_from` DATE NOT NULL,
|
|
`date_to` DATE NOT NULL,
|
|
`project_id` INTEGER NULL,
|
|
`category` ENUM('work', 'preparation', 'travel', 'leave', 'sick', 'training', 'other') NOT NULL DEFAULT 'work',
|
|
`note` VARCHAR(500) NOT NULL,
|
|
`created_by` INTEGER NOT NULL,
|
|
`created_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
|
|
`updated_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
|
|
`is_deleted` BOOLEAN NULL DEFAULT false,
|
|
|
|
INDEX `idx_wpe_user_from`(`user_id`, `date_from`),
|
|
INDEX `idx_wpe_user_to`(`user_id`, `date_to`),
|
|
INDEX `idx_wpe_project`(`project_id`),
|
|
INDEX `idx_wpe_dates`(`date_from`, `date_to`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `work_plan_overrides` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`user_id` INTEGER NOT NULL,
|
|
`shift_date` DATE NOT NULL,
|
|
`project_id` INTEGER NULL,
|
|
`category` ENUM('work', 'preparation', 'travel', 'leave', 'sick', 'training', 'other') NOT NULL,
|
|
`note` VARCHAR(500) NOT NULL,
|
|
`created_by` INTEGER NOT NULL,
|
|
`created_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
|
|
`updated_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
|
|
`is_deleted` BOOLEAN NULL DEFAULT false,
|
|
|
|
INDEX `idx_wpo_date`(`shift_date`),
|
|
UNIQUE INDEX `uniq_wpo_user_date`(`user_id`, `shift_date`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_entries` ADD CONSTRAINT `work_plan_entries_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_entries` ADD CONSTRAINT `work_plan_entries_project_id_fkey` FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_entries` ADD CONSTRAINT `work_plan_entries_created_by_fkey` FOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE NO ACTION;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_overrides` ADD CONSTRAINT `work_plan_overrides_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE NO ACTION;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_overrides` ADD CONSTRAINT `work_plan_overrides_project_id_fkey` FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE SET NULL ON UPDATE NO ACTION;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `work_plan_overrides` ADD CONSTRAINT `work_plan_overrides_created_by_fkey` FOREIGN KEY (`created_by`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE NO ACTION;
|