integrated database migrations

This commit is contained in:
2025-10-11 00:24:35 +02:00
parent 6247461754
commit 35d3ffd689
5 changed files with 18 additions and 16 deletions

View File

@@ -3,9 +3,6 @@ import { Request, Response } from 'express';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { db } from '../services/databaseService.js'; import { db } from '../services/databaseService.js';
import { import {
ShiftTemplate,
TemplateShiftSlot,
TemplateShiftTimeRange,
CreateShiftTemplateRequest, CreateShiftTemplateRequest,
UpdateShiftTemplateRequest UpdateShiftTemplateRequest
} from '../models/ShiftTemplate.js'; } from '../models/ShiftTemplate.js';
@@ -233,7 +230,7 @@ export const createTemplate = async (req: Request, res: Response): Promise<void>
await db.run( await db.run(
`INSERT INTO template_time_slots (id, template_id, name, start_time, end_time, description) `INSERT INTO template_time_slots (id, template_id, name, start_time, end_time, description)
VALUES (?, ?, ?, ?, ?, ?)`, VALUES (?, ?, ?, ?, ?, ?)`,
[timeSlotId, templateId, timeSlot.name, timeSlot.startTime, timeSlot.endTime, timeSlot.description] [timeSlotId, templateId, timeSlot.name, timeSlot.startTime, timeSlot.endTime, description]
); );
} }
@@ -316,7 +313,7 @@ export const updateTemplate = async (req: Request, res: Response): Promise<void>
await db.run( await db.run(
`INSERT INTO template_time_slots (id, template_id, name, start_time, end_time, description) `INSERT INTO template_time_slots (id, template_id, name, start_time, end_time, description)
VALUES (?, ?, ?, ?, ?, ?)`, VALUES (?, ?, ?, ?, ?, ?)`,
[timeSlotId, id, timeSlot.name, timeSlot.startTime, timeSlot.endTime, timeSlot.description] [timeSlotId, id, timeSlot.name, timeSlot.startTime, timeSlot.endTime, description]
); );
} }
} }

View File

@@ -1,4 +0,0 @@
-- Add employee fields
ALTER TABLE users ADD COLUMN employee_type TEXT CHECK(employee_type IN ('chef', 'neuling', 'erfahren'));
ALTER TABLE users ADD COLUMN is_sufficiently_independent BOOLEAN DEFAULT FALSE;
ALTER TABLE users ADD COLUMN last_login TEXT DEFAULT NULL;

View File

@@ -1,2 +0,0 @@
-- backend/src/database/migrations/003_add_shift_name.sql
ALTER TABLE assigned_shifts ADD COLUMN name TEXT;

View File

@@ -27,11 +27,21 @@ CREATE TABLE IF NOT EXISTS shift_templates (
CREATE TABLE IF NOT EXISTS template_shifts ( CREATE TABLE IF NOT EXISTS template_shifts (
id TEXT PRIMARY KEY, id TEXT PRIMARY KEY,
template_id TEXT NOT NULL, template_id TEXT NOT NULL,
time_range_id TEXT NOT NULL,
day_of_week INTEGER NOT NULL CHECK (day_of_week >= 1 AND day_of_week <= 7), day_of_week INTEGER NOT NULL CHECK (day_of_week >= 1 AND day_of_week <= 7),
required_employees INTEGER DEFAULT 1,
color TEXT DEFAULT '#3498db',
FOREIGN KEY (template_id) REFERENCES shift_templates(id) ON DELETE CASCADE,
FOREIGN KEY (time_range_id) REFERENCES template_time_slots(id) ON DELETE CASCADE
);
-- Tabelle für Zeitbereiche in den Vorlagen
CREATE TABLE IF NOT EXISTS template_time_slots (
id TEXT PRIMARY KEY,
template_id TEXT NOT NULL,
name TEXT NOT NULL, name TEXT NOT NULL,
start_time TEXT NOT NULL, start_time TEXT NOT NULL,
end_time TEXT NOT NULL, end_time TEXT NOT NULL,
required_employees INTEGER DEFAULT 1,
FOREIGN KEY (template_id) REFERENCES shift_templates(id) ON DELETE CASCADE FOREIGN KEY (template_id) REFERENCES shift_templates(id) ON DELETE CASCADE
); );

View File

@@ -11,6 +11,7 @@ export interface TemplateShift {
export interface TemplateShiftSlot { export interface TemplateShiftSlot {
id: string; id: string;
templateId: string;
dayOfWeek: number; dayOfWeek: number;
timeRange: TemplateShiftTimeRange; timeRange: TemplateShiftTimeRange;
requiredEmployees: number; requiredEmployees: number;
@@ -28,14 +29,14 @@ export interface CreateShiftTemplateRequest {
name: string; name: string;
description?: string; description?: string;
isDefault: boolean; isDefault: boolean;
shifts: Omit<TemplateShift, 'id' | 'templateId'>[]; shifts: Omit<TemplateShiftSlot, 'id' | 'templateId'>[];
timeSlots: Omit<TemplateShiftTimeRange, 'id'>[]; timeSlots: TemplateShiftTimeRange[];
} }
export interface UpdateShiftTemplateRequest { export interface UpdateShiftTemplateRequest {
name?: string; name?: string;
description?: string; description?: string;
isDefault?: boolean; isDefault?: boolean;
shifts?: Omit<TemplateShift, 'id' | 'templateId'>[]; shifts?: Omit<TemplateShiftSlot, 'id' | 'templateId'>[];
timeSlots?: Omit<TemplateShiftTimeRange, 'id'>[]; timeSlots?: TemplateShiftTimeRange[];
} }