diff --git a/server/src/controllers/asset-media.controller.spec.ts b/server/src/controllers/asset-media.controller.spec.ts index eb594fbe47..c2f6aeacef 100644 --- a/server/src/controllers/asset-media.controller.spec.ts +++ b/server/src/controllers/asset-media.controller.spec.ts @@ -85,19 +85,6 @@ describe(AssetMediaController.name, () => { expect(body).toEqual(factory.responses.badRequest(['metadata must be valid JSON'])); }); - it('should validate iCloudId is a string', async () => { - const { status, body } = await request(ctx.getHttpServer()) - .post('/assets') - .attach('assetData', assetData, filename) - .field({ - ...makeUploadDto(), - metadata: JSON.stringify([{ key: AssetMetadataKey.MobileApp, value: { iCloudId: 123 } }]), - }); - - expect(status).toBe(400); - expect(body).toEqual(factory.responses.badRequest(['metadata.0.value.iCloudId must be a string'])); - }); - it('should require `deviceAssetId`', async () => { const { status, body } = await request(ctx.getHttpServer()) .post('/assets') diff --git a/server/src/dtos/asset.dto.ts b/server/src/dtos/asset.dto.ts index dc43a0200c..03d1e31fb9 100644 --- a/server/src/dtos/asset.dto.ts +++ b/server/src/dtos/asset.dto.ts @@ -19,7 +19,6 @@ import { import { BulkIdsDto } from 'src/dtos/asset-ids.response.dto'; import { AssetMetadataKey, AssetType, AssetVisibility } from 'src/enum'; import { AssetStats } from 'src/repositories/asset.repository'; -import { AssetMetadata, AssetMetadataItem } from 'src/types'; import { IsNotSiblingOf, Optional, ValidateBoolean, ValidateEnum, ValidateUUID } from 'src/validation'; export class DeviceIdDto { @@ -154,23 +153,12 @@ export class AssetMetadataUpsertDto { items!: AssetMetadataUpsertItemDto[]; } -export class AssetMetadataUpsertItemDto implements AssetMetadataItem { +export class AssetMetadataUpsertItemDto { @ValidateEnum({ enum: AssetMetadataKey, name: 'AssetMetadataKey' }) key!: AssetMetadataKey; @IsObject() - @ValidateNested() - @Type((options) => { - switch (options?.object.key) { - case AssetMetadataKey.MobileApp: { - return AssetMetadataMobileAppDto; - } - default: { - return Object; - } - } - }) - value!: AssetMetadata[AssetMetadataKey]; + value!: object; } export class AssetMetadataMobileAppDto { diff --git a/server/src/repositories/asset.repository.ts b/server/src/repositories/asset.repository.ts index d3d9ada80f..fc83c30c9a 100644 --- a/server/src/repositories/asset.repository.ts +++ b/server/src/repositories/asset.repository.ts @@ -11,7 +11,6 @@ import { AssetExifTable } from 'src/schema/tables/asset-exif.table'; import { AssetFileTable } from 'src/schema/tables/asset-file.table'; import { AssetJobStatusTable } from 'src/schema/tables/asset-job-status.table'; import { AssetTable } from 'src/schema/tables/asset.table'; -import { AssetMetadataItem } from 'src/types'; import { anyUuid, asUuid, @@ -224,7 +223,7 @@ export class AssetRepository { .execute(); } - upsertMetadata(id: string, items: AssetMetadataItem[]) { + upsertMetadata(id: string, items: Array<{ key: AssetMetadataKey; value: object }>) { return this.db .insertInto('asset_metadata') .values(items.map((item) => ({ assetId: id, ...item }))) diff --git a/server/src/schema/tables/asset-metadata.table.ts b/server/src/schema/tables/asset-metadata.table.ts index 486101408d..d529d6ad7b 100644 --- a/server/src/schema/tables/asset-metadata.table.ts +++ b/server/src/schema/tables/asset-metadata.table.ts @@ -12,7 +12,6 @@ import { Timestamp, UpdateDateColumn, } from 'src/sql-tools'; -import { AssetMetadata, AssetMetadataItem } from 'src/types'; @UpdatedAtTrigger('asset_metadata_updated_at') @Table('asset_metadata') @@ -22,7 +21,7 @@ import { AssetMetadata, AssetMetadataItem } from 'src/types'; referencingOldTableAs: 'old', when: 'pg_trigger_depth() = 0', }) -export class AssetMetadataTable implements AssetMetadataItem { +export class AssetMetadataTable { @ForeignKeyColumn(() => AssetTable, { onUpdate: 'CASCADE', onDelete: 'CASCADE', @@ -33,10 +32,10 @@ export class AssetMetadataTable; diff --git a/server/src/types.ts b/server/src/types.ts index 848d19177d..11a5d5f66c 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -4,7 +4,6 @@ import { Asset } from 'src/database'; import { UploadFieldName } from 'src/dtos/asset-media.dto'; import { AuthDto } from 'src/dtos/auth.dto'; import { - AssetMetadataKey, AssetOrder, AssetType, DatabaseSslMode, @@ -563,12 +562,3 @@ export interface UserMetadata extends Record = { - key: T; - value: AssetMetadata[T]; -}; - -export interface AssetMetadata extends Record> { - [AssetMetadataKey.MobileApp]: { iCloudId: string }; -}