diff --git a/server/db.js b/server/db.js index 2367685..002e4f5 100644 --- a/server/db.js +++ b/server/db.js @@ -14,10 +14,33 @@ db.pragma('foreign_keys = ON'); const schema = fs.readFileSync(path.join(__dirname, 'schema.sql'), 'utf8'); db.exec(schema); +migrateEmployeeName(); + if (isNew) { seed(); } +// Ältere Deployments hatten ein einzelnes "name"-Feld statt first_name/last_name. +// Bestehende Daten werden erhalten, indem der Name gesplittet statt die Tabelle neu angelegt wird. +function migrateEmployeeName() { + const columns = db.prepare('PRAGMA table_info(employees)').all().map((c) => c.name); + if (!columns.includes('name') || columns.includes('first_name')) return; + + db.exec('ALTER TABLE employees ADD COLUMN first_name TEXT'); + db.exec('ALTER TABLE employees ADD COLUMN last_name TEXT'); + + const rows = db.prepare('SELECT id, name FROM employees').all(); + const update = db.prepare('UPDATE employees SET first_name = ?, last_name = ? WHERE id = ?'); + for (const row of rows) { + const parts = (row.name || '').trim().split(/\s+/); + const first_name = parts.shift() || ''; + const last_name = parts.join(' '); + update.run(first_name, last_name, row.id); + } + + db.exec('ALTER TABLE employees DROP COLUMN name'); +} + function seed() { const insertEmployee = db.prepare( 'INSERT INTO employees (first_name, last_name, email, role, weekly_capacity_hours) VALUES (?, ?, ?, ?, ?)'