diff --git a/server/src/database.ts b/server/src/database.ts index c37a98b094..78a826373b 100644 --- a/server/src/database.ts +++ b/server/src/database.ts @@ -251,7 +251,7 @@ export type Person = { color: string | null; faceAssetId: string | null; isHidden: boolean; - thumbnailPath: string; + thumbnailPath: string | null; }; export type AssetFace = { diff --git a/server/src/dtos/person.dto.ts b/server/src/dtos/person.dto.ts index fa56ded176..b1408198bb 100644 --- a/server/src/dtos/person.dto.ts +++ b/server/src/dtos/person.dto.ts @@ -64,7 +64,7 @@ export const PersonResponseSchema = z name: z.string().describe('Person name'), // TODO: use `isoDateToDate` when using `ZodSerializerDto` on the controllers. birthDate: z.string().meta({ format: 'date' }).describe('Person date of birth').nullable(), - thumbnailPath: z.string().describe('Thumbnail path'), + thumbnailPath: z.string().nullable().describe('Thumbnail path'), isHidden: z.boolean().describe('Is hidden'), // TODO: use `isoDatetimeToDate` when using `ZodSerializerDto` on the controllers. updatedAt: z diff --git a/server/src/schema/migrations/1784554467506-ConvertPersonThumbnailPathEmptyStringToNull.ts b/server/src/schema/migrations/1784554467506-ConvertPersonThumbnailPathEmptyStringToNull.ts new file mode 100644 index 0000000000..8abeda8cb9 --- /dev/null +++ b/server/src/schema/migrations/1784554467506-ConvertPersonThumbnailPathEmptyStringToNull.ts @@ -0,0 +1,13 @@ +import { Kysely, sql } from 'kysely'; + +export async function up(db: Kysely): Promise { + await sql`ALTER TABLE "person" ALTER COLUMN "thumbnailPath" DROP NOT NULL;`.execute(db); + await sql`ALTER TABLE "person" ALTER COLUMN "thumbnailPath" SET DEFAULT NULL;`.execute(db); + await sql`UPDATE "person" SET "thumbnailPath" = NULL WHERE "thumbnailPath" = '';`.execute(db); +} + +export async function down(): Promise { + await sql`UPDATE "person" SET "thumbnailPath" = '' WHERE "thumbnailPath" IS NULL;`.execute(db); + await sql`ALTER TABLE "person" ALTER COLUMN "thumbnailPath" SET DEFAULT '';`.execute(db); + await sql`ALTER TABLE "person" ALTER COLUMN "thumbnailPath" SET NOT NULL;`.execute(db); +} diff --git a/server/src/schema/tables/person.table.ts b/server/src/schema/tables/person.table.ts index 35447acfd0..4600702ed0 100644 --- a/server/src/schema/tables/person.table.ts +++ b/server/src/schema/tables/person.table.ts @@ -46,8 +46,8 @@ export class PersonTable { @Column({ default: '' }) name!: Generated; - @Column({ default: '' }) - thumbnailPath!: Generated; + @Column({ nullable: true, default: null }) + thumbnailPath!: string | null; @Column({ type: 'boolean', default: false }) isHidden!: Generated;