import { client } from '../client' import { API } from '../endpoints' import type { ApiResponse, ListParams, PaginatedResponse } from '@/scripts/types/api' export type DiskDriverValue = | 'local' | 's3' | 's3compat' | 'doSpaces' | 'dropbox' export interface Disk { id: number name: string type: string driver: DiskDriverValue set_as_default: boolean credentials: Record | string | null company_id?: number | null } export interface DiskDriversResponse { drivers: Array<{ name: string value: DiskDriverValue }> default: DiskDriverValue | string } export interface CreateDiskPayload { name: string driver: DiskDriverValue credentials?: Record | string set_as_default?: boolean } export interface DiskPurposes { media_disk_id: number | null pdf_disk_id: number | null backup_disk_id: number | null } export const diskService = { async list(params?: ListParams): Promise> { const { data } = await client.get(API.DISKS, { params }) return data }, async get(disk: DiskDriverValue): Promise> { const { data } = await client.get(`${API.DISKS}/${disk}`) return data }, async create(payload: CreateDiskPayload): Promise> { const { data } = await client.post(API.DISKS, payload) return data }, async update( id: number, payload: Partial ): Promise> { const { data } = await client.put(`${API.DISKS}/${id}`, payload) return data }, async delete(id: number): Promise<{ success: boolean }> { const { data } = await client.delete(`${API.DISKS}/${id}`) return data }, async getDrivers(): Promise { const { data } = await client.get(API.DISK_DRIVERS) return data }, async getDiskPurposes(): Promise { const { data } = await client.get(API.DISK_PURPOSES) return data }, async updateDiskPurposes(payload: Partial): Promise<{ success: boolean }> { const { data } = await client.put(API.DISK_PURPOSES, payload) return data }, }