From 5419b3fbd11db06902480a1dc85d251da42474d1 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 18 Jul 2026 14:48:41 +0100 Subject: [PATCH] Added user settings schema to the database, defining user preferences and default settings. This new model includes fields for view mode, sidebar visibility, and timestamps for creation and updates, enhancing user customization capabilities. --- .../schemas/misc/usersettings.schema.js | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/database/schemas/misc/usersettings.schema.js diff --git a/src/database/schemas/misc/usersettings.schema.js b/src/database/schemas/misc/usersettings.schema.js new file mode 100644 index 0000000..44d8c07 --- /dev/null +++ b/src/database/schemas/misc/usersettings.schema.js @@ -0,0 +1,41 @@ +import mongoose from 'mongoose'; +import { generateId } from '../../utils.js'; +const { Schema } = mongoose; + +const userSettingsSchema = new mongoose.Schema({ + _reference: { type: String, default: () => generateId()() }, + user: { + type: Schema.Types.ObjectId, + ref: 'user', + required: true, + unique: true, + }, + defaults: { + viewMode: { type: Schema.Types.Mixed, default: () => ({}) }, + filterSidebarVisibility: { + type: Schema.Types.Mixed, + default: () => ({}), + }, + columnVisibility: { type: Schema.Types.Mixed, default: () => ({}) }, + collapseState: { type: Schema.Types.Mixed, default: () => ({}) }, + }, + + createdAt: { + type: Date, + required: true, + default: Date.now, + }, + updatedAt: { + type: Date, + required: true, + default: Date.now, + }, +}); + +userSettingsSchema.virtual('id').get(function () { + return this._id; +}); + +userSettingsSchema.set('toJSON', { virtuals: true }); + +export const userSettingsModel = mongoose.model('userSettings', userSettingsSchema);