book_manage/packages/common/src/models/resource.ts

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;
};