import { request } from '../../lib/http' import type { GlobalProjectAsset, ProjectAsset, UpdateProjectAssetInput, UploadProjectAssetInput } from './types' /** 固定项目资产路径并编码正式数据库 ID。 */ function assetPath(projectId: string, assetId?: string) { const base = `/projects/${encodeURIComponent(projectId)}/assets` return assetId ? `${base}/${encodeURIComponent(assetId)}` : base } /** 项目素材 API;上传使用 multipart,浏览和编辑不调用生成模型。 */ export const projectAssetsApi = { listAll: (signal?: AbortSignal) => request('/assets', { signal }), list: (projectId: string, signal?: AbortSignal) => request(assetPath(projectId), { signal }), get: (projectId: string, assetId: string, signal?: AbortSignal) => request(assetPath(projectId, assetId), { signal }), upload: (projectId: string, input: UploadProjectAssetInput) => { const body = new FormData() body.append('file', input.file) body.append('name', input.name) body.append('category', input.category) return request(assetPath(projectId), { method: 'POST', body, timeoutMs: 0 }) }, update: (projectId: string, assetId: string, input: UpdateProjectAssetInput) => request(assetPath(projectId, assetId), { method: 'PUT', body: input }), remove: (projectId: string, assetId: string) => request(assetPath(projectId, assetId), { method: 'DELETE' }) }