Initial commit

This commit is contained in:
2026-09-06 10:24:05 +02:00
commit ecf08f8307
21 changed files with 7118 additions and 0 deletions

45
src/lib/db.js Normal file
View File

@@ -0,0 +1,45 @@
import Dexie from 'dexie';
export const db = new Dexie('TimeLogDB');
db.version(1).stores({
timeLogs: '++id, date, startTime, endTime, taskName, clientName',
settings: 'key' // for retention policy
});
// Helper functions
export async function addLog(log) {
return await db.timeLogs.add(log);
}
export async function getLogsByDate(date) {
return await db.timeLogs.where('date').equals(date).toArray();
}
export async function getRecentLogs(limit = 10) {
return await db.timeLogs.orderBy('id').reverse().limit(limit).toArray();
}
export async function getLastLog() {
return await db.timeLogs.orderBy('id').reverse().first();
}
export async function setRetentionDays(days) {
await db.settings.put({ key: 'retentionDays', value: days });
}
// Retention logic
export async function cleanupOldLogs() {
const retentionDays = await db.settings.get('retentionDays') || 30;
const cutoffDate = new Date();
cutoffDate.setDate(cutoffDate.getDate() - retentionDays);
// Keep the latest day's report
const latestDate = await db.timeLogs.orderBy('date').reverse().first();
if (latestDate) {
await db.timeLogs
.where('date')
.below(cutoffDate.toISOString().split('T')[0])
.and(log => log.date !== latestDate.date)
.delete();
}
}