diff --git a/server/src/repositories/settings/MongoSettingsRepository.ts b/server/src/repositories/settings/MongoSettingsRepository.ts index e41abcd96..3117a94ea 100644 --- a/server/src/repositories/settings/MongoSettingsRepository.ts +++ b/server/src/repositories/settings/MongoSettingsRepository.ts @@ -1,4 +1,4 @@ -import mongoose from "mongoose"; +import mongoose, { type UpdateQuery } from "mongoose"; import { ISettingsRepository } from "@/repositories/settings/ISettingsRepository.js"; import type { Settings, SettingsUpdate } from "@/types/index.js"; import { AppSettingsModel, type AppSettingsDocument } from "@/db/models/index.js"; @@ -60,26 +60,22 @@ class MongoSettingsRepository implements ISettingsRepository { }; update = async (settings: SettingsUpdate) => { - const update: Record = { $set: {}, $unset: {} }; + const $set: Record = {}; + const $unset: Record = {}; // Iterate through settings and separate into $set and $unset Object.entries(settings).forEach(([key, value]) => { if (value === undefined || value === null) { - // Unset undefined or empty string values - update.$unset[key] = ""; + $unset[key] = ""; } else { - // Set defined values - update.$set[key] = value; + $set[key] = value; } }); - // Clean up empty operators - if (Object.keys(update.$set).length === 0) { - delete update.$set; - } - if (Object.keys(update.$unset).length === 0) { - delete update.$unset; - } + const update: UpdateQuery = { + ...(Object.keys($set).length > 0 && { $set }), + ...(Object.keys($unset).length > 0 && { $unset }), + }; await AppSettingsModel.findOneAndUpdate({}, update, { upsert: true,