feat: 新增项目资产库与形态参考素材
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { request } from '../../lib/http'
|
||||
import type { 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 = {
|
||||
list: (projectId: string, signal?: AbortSignal) => request<ProjectAsset[]>(assetPath(projectId), { signal }),
|
||||
get: (projectId: string, assetId: string, signal?: AbortSignal) =>
|
||||
request<ProjectAsset>(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<ProjectAsset>(assetPath(projectId), { method: 'POST', body, timeoutMs: 0 })
|
||||
},
|
||||
update: (projectId: string, assetId: string, input: UpdateProjectAssetInput) =>
|
||||
request<ProjectAsset>(assetPath(projectId, assetId), { method: 'PUT', body: input }),
|
||||
remove: (projectId: string, assetId: string) =>
|
||||
request<ProjectAsset>(assetPath(projectId, assetId), { method: 'DELETE' })
|
||||
}
|
||||
Reference in New Issue
Block a user