From d309b712f1af43d23b5c30486ee1b91933fc8d35 Mon Sep 17 00:00:00 2001 From: itsrubberduck Date: Wed, 6 May 2026 17:38:36 +0200 Subject: [PATCH] Wochenreport --- app/app.vue | 88 +++++++++++++++++++++++++++- server/models/ProductUsageSession.ts | 27 +++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 server/models/ProductUsageSession.ts diff --git a/app/app.vue b/app/app.vue index 71844c0..967eb08 100644 --- a/app/app.vue +++ b/app/app.vue @@ -5,7 +5,7 @@ diff --git a/server/models/ProductUsageSession.ts b/server/models/ProductUsageSession.ts new file mode 100644 index 0000000..4175d8e --- /dev/null +++ b/server/models/ProductUsageSession.ts @@ -0,0 +1,27 @@ +import mongoose from 'mongoose' + +export type ProductUsageKey = 'classroom' | 'liveatc' + +export interface ProductUsageSessionDocument extends mongoose.Document { + user?: mongoose.Types.ObjectId + product: ProductUsageKey + path?: string + durationSeconds: number + startedAt: Date + endedAt: Date + createdAt: Date +} + +const productUsageSessionSchema = new mongoose.Schema({ + user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', index: true }, + product: { type: String, enum: ['classroom', 'liveatc'], required: true, index: true }, + path: { type: String, trim: true }, + durationSeconds: { type: Number, required: true, min: 0 }, + startedAt: { type: Date, required: true }, + endedAt: { type: Date, required: true, index: true }, + createdAt: { type: Date, default: () => new Date() }, +}) + +export const ProductUsageSession = + (mongoose.models.ProductUsageSession as mongoose.Model | undefined) || + mongoose.model('ProductUsageSession', productUsageSessionSchema)