mirror of
https://github.com/p-stream/backend.git
synced 2026-01-11 20:10:33 +00:00
add (almost) every user preference
This commit is contained in:
parent
efb534d50b
commit
951e6d2d39
3 changed files with 90 additions and 2 deletions
|
|
@ -0,0 +1,12 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE "user_settings" ADD COLUMN "enable_autoplay" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "enable_carousel_view" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "enable_details_modal" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "enable_discover" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "enable_featured" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "enable_image_logos" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "enable_skip_credits" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "enable_source_order" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "enable_thumbnails" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "proxy_tmdb" BOOLEAN NOT NULL DEFAULT false,
|
||||
ADD COLUMN "source_order" TEXT[] DEFAULT ARRAY[]::TEXT[];
|
||||
|
|
@ -66,6 +66,17 @@ model user_settings {
|
|||
proxy_urls String[]
|
||||
trakt_key String? @db.VarChar(255)
|
||||
febbox_key String? @db.VarChar(255)
|
||||
enable_thumbnails Boolean @default(false)
|
||||
enable_autoplay Boolean @default(true)
|
||||
enable_skip_credits Boolean @default(true)
|
||||
enable_discover Boolean @default(true)
|
||||
enable_featured Boolean @default(false)
|
||||
enable_details_modal Boolean @default(false)
|
||||
enable_image_logos Boolean @default(true)
|
||||
enable_carousel_view Boolean @default(false)
|
||||
source_order String[] @default([])
|
||||
enable_source_order Boolean @default(false)
|
||||
proxy_tmdb Boolean @default(false)
|
||||
}
|
||||
|
||||
model users {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,27 @@ import { scopedLogger } from '~/utils/logger';
|
|||
|
||||
const log = scopedLogger('user-settings');
|
||||
|
||||
interface UserSettings {
|
||||
id: string;
|
||||
application_theme: string | null;
|
||||
application_language: string;
|
||||
default_subtitle_language: string | null;
|
||||
proxy_urls: string[];
|
||||
trakt_key: string | null;
|
||||
febbox_key: string | null;
|
||||
enable_thumbnails: boolean;
|
||||
enable_autoplay: boolean;
|
||||
enable_skip_credits: boolean;
|
||||
enable_discover: boolean;
|
||||
enable_featured: boolean;
|
||||
enable_details_modal: boolean;
|
||||
enable_image_logos: boolean;
|
||||
enable_carousel_view: boolean;
|
||||
source_order: string[];
|
||||
enable_source_order: boolean;
|
||||
proxy_tmdb: boolean;
|
||||
}
|
||||
|
||||
const userSettingsSchema = z.object({
|
||||
applicationTheme: z.string().nullable().optional(),
|
||||
applicationLanguage: z.string().optional().default('en'),
|
||||
|
|
@ -11,6 +32,17 @@ const userSettingsSchema = z.object({
|
|||
proxyUrls: z.array(z.string()).nullable().optional(),
|
||||
traktKey: z.string().nullable().optional(),
|
||||
febboxKey: z.string().nullable().optional(),
|
||||
enableThumbnails: z.boolean().optional().default(false),
|
||||
enableAutoplay: z.boolean().optional().default(true),
|
||||
enableSkipCredits: z.boolean().optional().default(true),
|
||||
enableDiscover: z.boolean().optional().default(true),
|
||||
enableFeatured: z.boolean().optional().default(false),
|
||||
enableDetailsModal: z.boolean().optional().default(false),
|
||||
enableImageLogos: z.boolean().optional().default(true),
|
||||
enableCarouselView: z.boolean().optional().default(false),
|
||||
sourceOrder: z.array(z.string()).optional().default([]),
|
||||
enableSourceOrder: z.boolean().optional().default(false),
|
||||
proxyTmdb: z.boolean().optional().default(false),
|
||||
});
|
||||
|
||||
export default defineEventHandler(async event => {
|
||||
|
|
@ -41,7 +73,7 @@ export default defineEventHandler(async event => {
|
|||
try {
|
||||
const settings = await prisma.user_settings.findUnique({
|
||||
where: { id: userId },
|
||||
});
|
||||
}) as unknown as UserSettings | null;
|
||||
|
||||
return {
|
||||
id: userId,
|
||||
|
|
@ -51,6 +83,17 @@ export default defineEventHandler(async event => {
|
|||
proxyUrls: settings?.proxy_urls.length === 0 ? null : settings?.proxy_urls || null,
|
||||
traktKey: settings?.trakt_key || null,
|
||||
febboxKey: settings?.febbox_key || null,
|
||||
enableThumbnails: settings?.enable_thumbnails ?? false,
|
||||
enableAutoplay: settings?.enable_autoplay ?? true,
|
||||
enableSkipCredits: settings?.enable_skip_credits ?? true,
|
||||
enableDiscover: settings?.enable_discover ?? true,
|
||||
enableFeatured: settings?.enable_featured ?? false,
|
||||
enableDetailsModal: settings?.enable_details_modal ?? false,
|
||||
enableImageLogos: settings?.enable_image_logos ?? true,
|
||||
enableCarouselView: settings?.enable_carousel_view ?? false,
|
||||
sourceOrder: settings?.source_order || [],
|
||||
enableSourceOrder: settings?.enable_source_order ?? false,
|
||||
proxyTmdb: settings?.proxy_tmdb ?? false,
|
||||
};
|
||||
} catch (error) {
|
||||
log.error('Failed to get user settings', {
|
||||
|
|
@ -78,6 +121,17 @@ export default defineEventHandler(async event => {
|
|||
proxy_urls: validatedBody.proxyUrls === null ? [] : validatedBody.proxyUrls || [],
|
||||
trakt_key: validatedBody.traktKey ?? null,
|
||||
febbox_key: validatedBody.febboxKey ?? null,
|
||||
enable_thumbnails: validatedBody.enableThumbnails,
|
||||
enable_autoplay: validatedBody.enableAutoplay,
|
||||
enable_skip_credits: validatedBody.enableSkipCredits,
|
||||
enable_discover: validatedBody.enableDiscover,
|
||||
enable_featured: validatedBody.enableFeatured,
|
||||
enable_details_modal: validatedBody.enableDetailsModal,
|
||||
enable_image_logos: validatedBody.enableImageLogos,
|
||||
enable_carousel_view: validatedBody.enableCarouselView,
|
||||
source_order: validatedBody.sourceOrder || [],
|
||||
enable_source_order: validatedBody.enableSourceOrder,
|
||||
proxy_tmdb: validatedBody.proxyTmdb,
|
||||
};
|
||||
|
||||
log.info('Preparing to upsert settings', { userId, data });
|
||||
|
|
@ -89,7 +143,7 @@ export default defineEventHandler(async event => {
|
|||
id: userId,
|
||||
...data,
|
||||
},
|
||||
});
|
||||
}) as unknown as UserSettings;
|
||||
|
||||
log.info('Settings updated successfully', { userId });
|
||||
|
||||
|
|
@ -101,6 +155,17 @@ export default defineEventHandler(async event => {
|
|||
proxyUrls: settings.proxy_urls.length === 0 ? null : settings.proxy_urls,
|
||||
traktKey: settings.trakt_key,
|
||||
febboxKey: settings.febbox_key,
|
||||
enableThumbnails: settings.enable_thumbnails,
|
||||
enableAutoplay: settings.enable_autoplay,
|
||||
enableSkipCredits: settings.enable_skip_credits,
|
||||
enableDiscover: settings.enable_discover,
|
||||
enableFeatured: settings.enable_featured,
|
||||
enableDetailsModal: settings.enable_details_modal,
|
||||
enableImageLogos: settings.enable_image_logos,
|
||||
enableCarouselView: settings.enable_carousel_view,
|
||||
sourceOrder: settings.source_order,
|
||||
enableSourceOrder: settings.enable_source_order,
|
||||
proxyTmdb: settings.proxy_tmdb,
|
||||
};
|
||||
} catch (error) {
|
||||
log.error('Failed to update user settings', {
|
||||
|
|
|
|||
Loading…
Reference in a new issue