mirror of
https://github.com/p-stream/backend.git
synced 2026-04-21 12:12:17 +00:00
fix: prevent overwriting settings with defaults
This commit is contained in:
parent
62e0b545be
commit
955578c429
1 changed files with 24 additions and 5 deletions
|
|
@ -114,11 +114,11 @@ export default defineEventHandler(async event => {
|
||||||
|
|
||||||
const validatedBody = userSettingsSchema.parse(body);
|
const validatedBody = userSettingsSchema.parse(body);
|
||||||
|
|
||||||
const data = {
|
const createData = {
|
||||||
application_theme: validatedBody.applicationTheme ?? null,
|
application_theme: validatedBody.applicationTheme ?? null,
|
||||||
application_language: validatedBody.applicationLanguage,
|
application_language: validatedBody.applicationLanguage,
|
||||||
default_subtitle_language: validatedBody.defaultSubtitleLanguage ?? null,
|
default_subtitle_language: validatedBody.defaultSubtitleLanguage ?? null,
|
||||||
proxy_urls: validatedBody.proxyUrls === null ? [] : validatedBody.proxyUrls || [],
|
proxy_urls: validatedBody.proxyUrls === null ? [] : (validatedBody.proxyUrls || []),
|
||||||
trakt_key: validatedBody.traktKey ?? null,
|
trakt_key: validatedBody.traktKey ?? null,
|
||||||
febbox_key: validatedBody.febboxKey ?? null,
|
febbox_key: validatedBody.febboxKey ?? null,
|
||||||
enable_thumbnails: validatedBody.enableThumbnails,
|
enable_thumbnails: validatedBody.enableThumbnails,
|
||||||
|
|
@ -134,14 +134,33 @@ export default defineEventHandler(async event => {
|
||||||
proxy_tmdb: validatedBody.proxyTmdb,
|
proxy_tmdb: validatedBody.proxyTmdb,
|
||||||
};
|
};
|
||||||
|
|
||||||
log.info('Preparing to upsert settings', { userId, data });
|
const updateData: Partial<typeof createData> = {};
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'applicationTheme')) updateData.application_theme = createData.application_theme;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'applicationLanguage')) updateData.application_language = createData.application_language;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'defaultSubtitleLanguage')) updateData.default_subtitle_language = createData.default_subtitle_language;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'proxyUrls')) updateData.proxy_urls = createData.proxy_urls;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'traktKey')) updateData.trakt_key = createData.trakt_key;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'febboxKey')) updateData.febbox_key = createData.febbox_key;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableThumbnails')) updateData.enable_thumbnails = createData.enable_thumbnails;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableAutoplay')) updateData.enable_autoplay = createData.enable_autoplay;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableSkipCredits')) updateData.enable_skip_credits = createData.enable_skip_credits;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableDiscover')) updateData.enable_discover = createData.enable_discover;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableFeatured')) updateData.enable_featured = createData.enable_featured;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableDetailsModal')) updateData.enable_details_modal = createData.enable_details_modal;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableImageLogos')) updateData.enable_image_logos = createData.enable_image_logos;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableCarouselView')) updateData.enable_carousel_view = createData.enable_carousel_view;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'sourceOrder')) updateData.source_order = createData.source_order;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'enableSourceOrder')) updateData.enable_source_order = createData.enable_source_order;
|
||||||
|
if (Object.prototype.hasOwnProperty.call(body, 'proxyTmdb')) updateData.proxy_tmdb = createData.proxy_tmdb;
|
||||||
|
|
||||||
|
log.info('Preparing to upsert settings', { userId, updateData, createData: { id: userId, ...createData } });
|
||||||
|
|
||||||
const settings = await prisma.user_settings.upsert({
|
const settings = await prisma.user_settings.upsert({
|
||||||
where: { id: userId },
|
where: { id: userId },
|
||||||
update: data,
|
update: updateData,
|
||||||
create: {
|
create: {
|
||||||
id: userId,
|
id: userId,
|
||||||
...data,
|
...createData,
|
||||||
},
|
},
|
||||||
}) as unknown as UserSettings;
|
}) as unknown as UserSettings;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue