// task-session.js // Copyright (C) 2024 DTP Technologies, LLC // All Rights Reserved 'use strict'; import mongoose from 'mongoose'; const Schema = mongoose.Schema; const STATUS_LIST = ['active', 'finished']; const ScreenshotSchema = new Schema({ created: { type: Date, required: true, default: Date.now, index: 1 }, image: { type: Schema.ObjectId, required: true, ref: 'Image' }, }); const TaskSessionSchema = new Schema({ created: { type: Date, required: true, default: Date.now, index: 1 }, lastUpdated: { type: Date, required: true, default: Date.now, index: 1 }, finished: { type: Date, index: 1 }, duration: { type: Number, default: 0, required: true }, hourlyRate: { type: Number, required: true }, user: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, client: { type: Schema.ObjectId, required: true, index: 1, ref: 'Client' }, project: { type: Schema.ObjectId, required: true, index: 1, ref: 'ClientProject' }, task: { type: Schema.ObjectId, required: true, index: 1, ref: 'Task' }, status: { type: String, enum: STATUS_LIST, default: 'active', required: true }, notes: { type: [String], default: [ ] }, screenshots: { type: [ScreenshotSchema] }, }); export default mongoose.model('TaskSession', TaskSessionSchema);