| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import axios from 'axios';
- import type { FileLibrary, FileCategory } from '../../share/types.ts';
- import type { MinioUploadPolicy, OSSUploadPolicy } from '@d8d-appcontainer/types';
- interface FileUploadPolicyResponse {
- message: string;
- data: MinioUploadPolicy | OSSUploadPolicy;
- }
- interface FileListResponse {
- message: string;
- data: {
- list: FileLibrary[];
- pagination: {
- current: number;
- pageSize: number;
- total: number;
- };
- };
- }
- interface FileSaveResponse {
- message: string;
- data: FileLibrary;
- }
- interface FileInfoResponse {
- message: string;
- data: FileLibrary;
- }
- interface FileDeleteResponse {
- message: string;
- }
- interface FileCategoryListResponse {
- data: FileCategory[];
- total: number;
- page: number;
- pageSize: number;
- }
- interface FileCategoryCreateResponse {
- message: string;
- data: FileCategory;
- }
- interface FileCategoryUpdateResponse {
- message: string;
- data: FileCategory;
- }
- interface FileCategoryDeleteResponse {
- message: string;
- }
- export const FileAPI = {
- getUploadPolicy: async (filename: string, prefix: string = 'uploads/', maxSize: number = 10 * 1024 * 1024): Promise<FileUploadPolicyResponse> => {
- try {
- const response = await axios.get('/upload/policy', {
- params: { filename, prefix, maxSize }
- });
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- saveFileInfo: async (fileData: Partial<FileLibrary>): Promise<FileSaveResponse> => {
- try {
- const response = await axios.post('/upload/save', fileData);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- getFileList: async (params?: {
- page?: number,
- pageSize?: number,
- category_id?: number,
- fileType?: string,
- keyword?: string
- }): Promise<FileListResponse> => {
- try {
- const response = await axios.get('/upload/list', { params });
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- getFileInfo: async (id: number): Promise<FileInfoResponse> => {
- try {
- const response = await axios.get(`/upload/${id}`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- updateDownloadCount: async (id: number): Promise<FileDeleteResponse> => {
- try {
- const response = await axios.post(`/upload/${id}/download`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- deleteFile: async (id: number): Promise<FileDeleteResponse> => {
- try {
- const response = await axios.delete(`/upload/${id}`);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- getCategories: async (params?: {
- page?: number,
- pageSize?: number,
- search?: string
- }): Promise<FileCategoryListResponse> => {
- try {
- const response = await axios.get('/file-categories', { params });
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- createCategory: async (data: Partial<FileCategory>): Promise<FileCategoryCreateResponse> => {
- try {
- const response = await axios.post('/file-categories', data);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- updateCategory: async (id: number, data: Partial<FileCategory>): Promise<FileCategoryUpdateResponse> => {
- try {
- const response = await axios.put(`/file-categories/${id}`, data);
- return response.data;
- } catch (error) {
- throw error;
- }
- },
- deleteCategory: async (id: number): Promise<FileCategoryDeleteResponse> => {
- try {
- const response = await axios.delete(`/file-categories/${id}`);
- return response.data;
- } catch (error) {
- throw error;
- }
- }
- };
|