feat(media): add enrichment metadata fields across admin and public
This commit is contained in:
@@ -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"])
|
||||
})
|
||||
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE "MediaAsset"
|
||||
ADD COLUMN "licenseType" TEXT,
|
||||
ADD COLUMN "licenseUrl" TEXT,
|
||||
ADD COLUMN "usageContext" TEXT,
|
||||
ADD COLUMN "location" TEXT,
|
||||
ADD COLUMN "capturedAt" TIMESTAMP(3);
|
||||
@@ -123,6 +123,11 @@ model MediaAsset {
|
||||
source String?
|
||||
copyright String?
|
||||
author String?
|
||||
licenseType String?
|
||||
licenseUrl String?
|
||||
usageContext String?
|
||||
location String?
|
||||
capturedAt DateTime?
|
||||
tags String[]
|
||||
storageKey String? @unique
|
||||
mimeType String?
|
||||
|
||||
@@ -484,6 +484,11 @@ export async function getPublishedArtworkBySlug(slug: string) {
|
||||
source: true,
|
||||
author: true,
|
||||
copyright: true,
|
||||
licenseType: true,
|
||||
licenseUrl: true,
|
||||
usageContext: true,
|
||||
location: true,
|
||||
capturedAt: true,
|
||||
tags: true,
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user