import { getDb } from './db'; import type { ArbeitszeitEintrag, ArbeitszeitInput } from '@/types/arbeitszeit'; interface ListParams { limit: number; offset: number; month?: string; // "YYYY-MM" } interface ListResult { entries: ArbeitszeitEintrag[]; total: number; } /** Einträge absteigend nach Datum (neueste zuerst), optional nach Monat gefiltert. */ export function listArbeitszeit({ limit, offset, month }: ListParams): ListResult { const db = getDb(); const where = month ? `WHERE substr(datum, 1, 7) = ?` : ''; const args = month ? [month] : []; const total = ( db.prepare(`SELECT COUNT(*) AS c FROM arbeitszeit ${where}`).get(...args) as { c: number } ).c; const entries = db .prepare( `SELECT * FROM arbeitszeit ${where} ORDER BY datum DESC, beginn DESC, id DESC LIMIT ? OFFSET ?` ) .all(...args, limit, offset) as ArbeitszeitEintrag[]; return { entries, total }; } export function getArbeitszeit(id: number): ArbeitszeitEintrag | undefined { return getDb().prepare('SELECT * FROM arbeitszeit WHERE id = ?').get(id) as | ArbeitszeitEintrag | undefined; } export function createArbeitszeit(input: ArbeitszeitInput): ArbeitszeitEintrag { const db = getDb(); const info = db .prepare( `INSERT INTO arbeitszeit (datum, ort, beginn, ende, reisezeit, vertriebsunterstuetzung, kommentar) VALUES (@datum, @ort, @beginn, @ende, @reisezeit, @vertriebsunterstuetzung, @kommentar)` ) .run(input); return getArbeitszeit(Number(info.lastInsertRowid))!; } export function updateArbeitszeit( id: number, input: ArbeitszeitInput ): ArbeitszeitEintrag | undefined { const db = getDb(); db.prepare( `UPDATE arbeitszeit SET datum = @datum, ort = @ort, beginn = @beginn, ende = @ende, reisezeit = @reisezeit, vertriebsunterstuetzung = @vertriebsunterstuetzung, kommentar = @kommentar WHERE id = @id` ).run({ ...input, id }); return getArbeitszeit(id); } export function deleteArbeitszeit(id: number): boolean { return getDb().prepare('DELETE FROM arbeitszeit WHERE id = ?').run(id).changes > 0; } // --- Einstellungen ------------------------------------------------------- export function getPause(): number { const row = getDb().prepare(`SELECT value FROM settings WHERE key = 'pause'`).get() as | { value: string } | undefined; const v = row ? parseFloat(row.value) : 0.5; return isNaN(v) ? 0.5 : v; } export function setPause(value: number): void { getDb() .prepare( `INSERT INTO settings (key, value) VALUES ('pause', @value) ON CONFLICT(key) DO UPDATE SET value = @value` ) .run({ value: String(value) }); }