53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
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;
|
|
};
|