feat(media): add enrichment metadata fields across admin and public

This commit is contained in:
2026-02-12 22:42:08 +01:00
parent 6e9c0ad4e5
commit b9424c8a8b
14 changed files with 212 additions and 5 deletions

View File

@@ -12,10 +12,14 @@ describe("media schemas", () => {
const parsed = createMediaAssetInputSchema.parse({
type: "artwork",
title: "Artwork",
licenseType: "CC BY",
usageContext: "homepage hero",
capturedAt: new Date("2026-01-02T10:30:00.000Z"),
tags: ["tag-a"],
})
expect(parsed.type).toBe("artwork")
expect(parsed.licenseType).toBe("CC BY")
expect(parsed.tags).toEqual(["tag-a"])
})

View File

@@ -20,6 +20,11 @@ export const createMediaAssetInputSchema = z.object({
source: z.string().max(500).optional(),
copyright: z.string().max(500).optional(),
author: z.string().max(180).optional(),
licenseType: z.string().max(120).optional(),
licenseUrl: z.string().max(500).optional(),
usageContext: z.string().max(300).optional(),
location: z.string().max(180).optional(),
capturedAt: z.date().optional(),
tags: z.array(z.string().min(1).max(100)).default([]),
storageKey: z.string().max(500).optional(),
mimeType: z.string().max(180).optional(),
@@ -38,6 +43,11 @@ export const updateMediaAssetInputSchema = z.object({
source: z.string().max(500).nullable().optional(),
copyright: z.string().max(500).nullable().optional(),
author: z.string().max(180).nullable().optional(),
licenseType: z.string().max(120).nullable().optional(),
licenseUrl: z.string().max(500).nullable().optional(),
usageContext: z.string().max(300).nullable().optional(),
location: z.string().max(180).nullable().optional(),
capturedAt: z.date().nullable().optional(),
tags: z.array(z.string().min(1).max(100)).optional(),
mimeType: z.string().max(180).nullable().optional(),
width: z.number().int().positive().nullable().optional(),