import { Resource } from "@prisma/client"; export interface BaseMetadata { size: number; filetype: string; filename: string; extension: string; modifiedAt: Date; } /** * 图片特有元数据接口 */ export interface ImageMetadata { width: number; // 图片宽度(px) height: number; // 图片高度(px) compressedUrl?: string; orientation?: number; // EXIF方向信息 space?: string; // 色彩空间 (如: RGB, CMYK) hasAlpha?: boolean; // 是否包含透明通道 } /** * 视频特有元数据接口 */ export interface VideoMetadata { width?: number; height?: number; duration?: number; videoCodec?: string; audioCodec?: string; coverUrl?: string; } /** * 音频特有元数据接口 */ export interface AudioMetadata { duration: number; // 音频时长(秒) bitrate?: number; // 比特率(bps) sampleRate?: number; // 采样率(Hz) channels?: number; // 声道数 codec?: string; // 音频编码格式 } export type FileMetadata = ImageMetadata & VideoMetadata & AudioMetadata & BaseMetadata; export type ResourceDto = Resource & { meta: FileMetadata; };