diff --git a/server/src/api/validation/settingsValidation.ts b/server/src/api/validation/settingsValidation.ts index d118cbd4f..50c75b043 100644 --- a/server/src/api/validation/settingsValidation.ts +++ b/server/src/api/validation/settingsValidation.ts @@ -40,5 +40,16 @@ export const updateAppSettingsBodyValidation = z temperature: z.number().min(1).max(150).optional(), }) .optional(), + globalProxyEnabled: z.boolean().optional(), + globalProxyId: z.string().nullable().optional(), }) - .strip(); + .strip() + .superRefine((body, ctx) => { + if (body.globalProxyEnabled === true && !body.globalProxyId) { + ctx.addIssue({ + code: "custom", + path: ["globalProxyId"], + message: "A proxy must be selected to enable the global proxy", + }); + } + }); diff --git a/server/src/domain/app-settings/app-settings.model.ts b/server/src/domain/app-settings/app-settings.model.ts index da766fa83..3dd3c3abe 100644 --- a/server/src/domain/app-settings/app-settings.model.ts +++ b/server/src/domain/app-settings/app-settings.model.ts @@ -40,6 +40,8 @@ const AppSettingsSchema = new Schema( singleton: { type: Boolean, required: true, unique: true, default: true }, version: { type: Number, default: 1 }, globalThresholds: { type: thresholdsSchema }, + globalProxyEnabled: { type: Boolean, default: false }, + globalProxyId: { type: String, default: null }, }, { timestamps: true } ); diff --git a/server/src/domain/app-settings/app-settings.repository.mongo.ts b/server/src/domain/app-settings/app-settings.repository.mongo.ts index d88141ce5..d80289a7b 100644 --- a/server/src/domain/app-settings/app-settings.repository.mongo.ts +++ b/server/src/domain/app-settings/app-settings.repository.mongo.ts @@ -28,6 +28,8 @@ class MongoSettingsRepository implements ISettingsRepository { singleton: doc.singleton, version: doc.version ?? 1, globalThresholds: doc.globalThresholds ?? undefined, + globalProxyEnabled: doc.globalProxyEnabled ?? false, + globalProxyId: doc.globalProxyId ?? undefined, createdAt: toDateString(doc.createdAt), updatedAt: toDateString(doc.updatedAt), }; diff --git a/server/src/domain/app-settings/app-settings.type.ts b/server/src/domain/app-settings/app-settings.type.ts index 8233ced63..e4d2f9559 100644 --- a/server/src/domain/app-settings/app-settings.type.ts +++ b/server/src/domain/app-settings/app-settings.type.ts @@ -49,6 +49,8 @@ export interface Settings { singleton: boolean; version: number; globalThresholds?: SettingsThresholds; + globalProxyEnabled: boolean; + globalProxyId?: string | null; createdAt: string; updatedAt: string; }