feat(media): add admin media CRUD preview and storage cleanup

This commit is contained in:
2026-02-12 19:15:26 +01:00
parent 3e4f0b6c75
commit 7d9bc9dca9
11 changed files with 699 additions and 10 deletions

View File

@@ -29,6 +29,23 @@ export const createMediaAssetInputSchema = z.object({
isPublished: z.boolean().optional(),
})
export const updateMediaAssetInputSchema = z.object({
id: z.string().uuid(),
type: mediaAssetTypeSchema.optional(),
title: z.string().min(1).max(180).optional(),
description: z.string().max(5000).nullable().optional(),
altText: z.string().max(1000).nullable().optional(),
source: z.string().max(500).nullable().optional(),
copyright: z.string().max(500).nullable().optional(),
author: z.string().max(180).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(),
height: z.number().int().positive().nullable().optional(),
sizeBytes: z.number().int().min(0).nullable().optional(),
isPublished: z.boolean().optional(),
})
export const createArtworkInputSchema = z.object({
title: z.string().min(1).max(180),
slug: z.string().min(1).max(180),
@@ -66,6 +83,7 @@ export const attachArtworkRenditionInputSchema = z.object({
export type MediaAssetType = z.infer<typeof mediaAssetTypeSchema>
export type ArtworkRenditionSlot = z.infer<typeof artworkRenditionSlotSchema>
export type CreateMediaAssetInput = z.infer<typeof createMediaAssetInputSchema>
export type UpdateMediaAssetInput = z.infer<typeof updateMediaAssetInputSchema>
export type CreateArtworkInput = z.infer<typeof createArtworkInputSchema>
export type CreateGroupingInput = z.infer<typeof createGroupingInputSchema>
export type LinkArtworkGroupingInput = z.infer<typeof linkArtworkGroupingInputSchema>