From 66a2f760cf0085aefa826839147ed1a341166557 Mon Sep 17 00:00:00 2001 From: diced Date: Tue, 13 Jan 2026 22:47:40 -0800 Subject: [PATCH] fix: #957 --- .../migration.sql | 2 + prisma/schema.prisma | 1 + .../pages/serverSettings/parts/Tasks.tsx | 9 +++ src/lib/config/read/db.ts | 1 + src/lib/config/read/env.ts | 1 + src/lib/config/read/index.ts | 1 + src/lib/config/validate.ts | 1 + src/lib/datasource/Datasource.ts | 2 + src/lib/datasource/Local.ts | 8 ++- src/lib/datasource/S3.ts | 35 +++++++++++- src/lib/tasks/run/cleanThumbnails.ts | 56 +++++++++++++++++++ src/server/index.ts | 4 +- src/server/plugins/vite.ts | 4 +- .../routes/api/server/settings/index.ts | 1 + 14 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 prisma/migrations/20260114063251_clean_thumbnails/migration.sql create mode 100755 src/lib/tasks/run/cleanThumbnails.ts diff --git a/prisma/migrations/20260114063251_clean_thumbnails/migration.sql b/prisma/migrations/20260114063251_clean_thumbnails/migration.sql new file mode 100644 index 00000000..ae749e20 --- /dev/null +++ b/prisma/migrations/20260114063251_clean_thumbnails/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "public"."Zipline" ADD COLUMN "tasksCleanThumbnailsInterval" TEXT NOT NULL DEFAULT '1d'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index cba98add..9251f38a 100755 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -31,6 +31,7 @@ model Zipline { tasksMaxViewsInterval String @default("30m") tasksThumbnailsInterval String @default("30m") tasksMetricsInterval String @default("30m") + tasksCleanThumbnailsInterval String @default("1d") filesRoute String @default("/u") filesLength Int @default(6) diff --git a/src/components/pages/serverSettings/parts/Tasks.tsx b/src/components/pages/serverSettings/parts/Tasks.tsx index 6f964ba3..90cc3494 100644 --- a/src/components/pages/serverSettings/parts/Tasks.tsx +++ b/src/components/pages/serverSettings/parts/Tasks.tsx @@ -20,6 +20,7 @@ export default function Tasks({ tasksMaxViewsInterval: '30m', tasksThumbnailsInterval: '30m', tasksMetricsInterval: '30m', + tasksCleanThumbnailsInterval: '1d', }, enhanceGetInputProps: (payload) => ({ disabled: data?.tampered?.includes(payload.field) || false, @@ -37,6 +38,7 @@ export default function Tasks({ tasksMaxViewsInterval: data.settings.tasksMaxViewsInterval ?? '30m', tasksThumbnailsInterval: data.settings.tasksThumbnailsInterval ?? '30m', tasksMetricsInterval: data.settings.tasksMetricsInterval ?? '30m', + tasksCleanThumbnailsInterval: data.settings.tasksCleanThumbnailsInterval ?? '1d', }); }, [data]); @@ -79,6 +81,13 @@ export default function Tasks({ placeholder='30m' {...form.getInputProps('tasksThumbnailsInterval')} /> + +