diff --git a/src/lib/server/db/media.ts b/src/lib/server/db/media.ts index 1f1e065..fbd8976 100644 --- a/src/lib/server/db/media.ts +++ b/src/lib/server/db/media.ts @@ -5,7 +5,7 @@ import db from "./kysely"; interface Thumbnail { id: number; path: string; - createdAt: Date; + updatedAt: Date; encContentIv: string; } @@ -49,13 +49,13 @@ export const updateFileThumbnail = async ( .values({ file_id: fileId, path, - created_at: now, + updated_at: now, encrypted_content_iv: encContentIv, }) .onConflict((oc) => oc.column("file_id").doUpdateSet({ path, - created_at: now, + updated_at: now, encrypted_content_iv: encContentIv, }), ) @@ -80,7 +80,7 @@ export const getFileThumbnail = async (userId: number, fileId: number) => { fileId: thumbnail.file_id, path: thumbnail.path, encContentIv: thumbnail.encrypted_content_iv, - createdAt: thumbnail.created_at, + updatedAt: thumbnail.updated_at, } satisfies FileThumbnail) : null; }; diff --git a/src/lib/server/db/migrations/1738409340-AddThumbnail.ts b/src/lib/server/db/migrations/1738409340-AddThumbnail.ts index 0e38647..c3ce806 100644 --- a/src/lib/server/db/migrations/1738409340-AddThumbnail.ts +++ b/src/lib/server/db/migrations/1738409340-AddThumbnail.ts @@ -16,7 +16,7 @@ export const up = async (db: Kysely) => { col.references("category.id").onDelete("cascade").unique(), ) .addColumn("path", "text", (col) => col.unique().notNull()) - .addColumn("created_at", "timestamp(3)", (col) => col.notNull()) + .addColumn("updated_at", "timestamp(3)", (col) => col.notNull()) .addColumn("encrypted_content_iv", "text", (col) => col.notNull()) .addCheckConstraint( "thumbnail_ck01", diff --git a/src/lib/server/db/schema/media.ts b/src/lib/server/db/schema/media.ts index ad593b4..ebfbf29 100644 --- a/src/lib/server/db/schema/media.ts +++ b/src/lib/server/db/schema/media.ts @@ -6,7 +6,7 @@ interface ThumbnailTable { file_id: number | null; category_id: number | null; path: string; - created_at: Date; + updated_at: Date; encrypted_content_iv: string; // Base64 } diff --git a/src/lib/server/schemas/file.ts b/src/lib/server/schemas/file.ts index 4cf140f..1d7ccb5 100644 --- a/src/lib/server/schemas/file.ts +++ b/src/lib/server/schemas/file.ts @@ -31,6 +31,7 @@ export const fileRenameRequest = z.object({ export type FileRenameRequest = z.infer; export const fileThumbnailInfoResponse = z.object({ + updatedAt: z.string().datetime(), encContentIv: z.string().base64().nonempty(), }); export type FileThumbnailInfoResponse = z.infer; diff --git a/src/lib/server/services/file.ts b/src/lib/server/services/file.ts index 83e5750..7616739 100644 --- a/src/lib/server/services/file.ts +++ b/src/lib/server/services/file.ts @@ -92,7 +92,7 @@ export const getFileThumbnailInformation = async (userId: number, fileId: number error(404, "File or its thumbnail not found"); } - return { encContentIv: thumbnail.encContentIv }; + return { updatedAt: thumbnail.updatedAt, encContentIv: thumbnail.encContentIv }; }; export const getFileThumbnailStream = async (userId: number, fileId: number) => { diff --git a/src/routes/api/file/[id]/thumbnail/+server.ts b/src/routes/api/file/[id]/thumbnail/+server.ts index ab9d48c..7bc81ca 100644 --- a/src/routes/api/file/[id]/thumbnail/+server.ts +++ b/src/routes/api/file/[id]/thumbnail/+server.ts @@ -16,8 +16,11 @@ export const GET: RequestHandler = async ({ locals, params }) => { if (!zodRes.success) error(400, "Invalid path parameters"); const { id } = zodRes.data; - const { encContentIv } = await getFileThumbnailInformation(userId, id); + const { updatedAt, encContentIv } = await getFileThumbnailInformation(userId, id); return json( - fileThumbnailInfoResponse.parse({ encContentIv } satisfies FileThumbnailInfoResponse), + fileThumbnailInfoResponse.parse({ + updatedAt: updatedAt.toISOString(), + encContentIv, + } satisfies FileThumbnailInfoResponse), ); };