Files
ga-commission-system/ga-frontend/src/api/attachment.ts
T

40 lines
1.1 KiB
TypeScript
Raw Normal View History

2026-05-14 01:21:27 +09:00
import api, { unwrap } from './request';
export interface AttachmentMeta extends Record<string, unknown> {
attachmentId: number;
refType: string;
refId: number;
originalName: string;
storedPath: string;
fileSize: number;
mimeType: string;
uploadedBy: number;
uploaderName: string;
uploadedAt: string;
}
export const attachmentApi = {
list: (refType: string, refId: number) =>
unwrap<AttachmentMeta[]>(
api.get('/api/attachments', { params: { refType, refId } }),
),
upload: (refType: string, refId: number, file: File, onProgress?: (pct: number) => void) => {
const form = new FormData();
form.append('file', file);
form.append('refType', refType);
form.append('refId', String(refId));
return unwrap<AttachmentMeta>(
api.post('/api/attachments', form, {
headers: { 'Content-Type': 'multipart/form-data' },
onUploadProgress: (evt) => {
if (onProgress && evt.total) {
onProgress(Math.round((evt.loaded / evt.total) * 100));
}
},
}),
);
},
delete: (id: number) =>
unwrap<void>(api.delete(`/api/attachments/${id}`)),
};