This commit is contained in:
2026-06-30 20:06:59 +00:00
parent 712397859e
commit d65a084614
2 changed files with 41 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
const mongoose = require('mongoose');
const settingsSchema = new mongoose.Schema(
{
targetHoursPerDay: { type: Number, default: 8 },
// 0 = Sonntag ... 6 = Samstag (JS Date.getDay())
workDays: { type: [Number], default: [1, 2, 3, 4, 5] },
// Bereits vorhandenes Über-/Minusstunden-Guthaben, bevor die App genutzt wurde.
startingBalanceMinutes: { type: Number, default: 0 },
},
{ timestamps: true }
);
settingsSchema.statics.getSingleton = async function getSingleton() {
let settings = await this.findOne();
if (!settings) {
settings = await this.create({});
}
return settings;
};
module.exports = mongoose.model('Settings', settingsSchema);
+19
View File
@@ -0,0 +1,19 @@
const mongoose = require('mongoose');
const timeEntrySchema = new mongoose.Schema(
{
date: { type: String, required: true, unique: true }, // 'YYYY-MM-DD'
startTime: { type: String, required: true }, // 'HH:MM'
endTime: { type: String, required: true }, // 'HH:MM'
breakMinutes: { type: Number, default: 0 },
note: { type: String, default: '' },
// Werden beim Speichern anhand der zu diesem Zeitpunkt gültigen
// Einstellungen berechnet und fest abgelegt, damit spätere Änderungen
// an den Soll-Stunden bestehende Buchungen nicht rückwirkend verändern.
workedMinutes: { type: Number, required: true },
balanceMinutes: { type: Number, required: true },
},
{ timestamps: true }
);
module.exports = mongoose.model('TimeEntry', timeEntrySchema);