mirror of
https://github.com/donpat1to/Schichtenplaner.git
synced 2025-11-30 22:45:46 +01:00
integrated database migrations
This commit is contained in:
@@ -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]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
-- backend/src/database/migrations/003_add_shift_name.sql
|
|
||||||
ALTER TABLE assigned_shifts ADD COLUMN name TEXT;
|
|
||||||
@@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -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[];
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user