import type { PageData } from '../../utils/utils' import { axiosInstance } from '../../utils/utils' export abstract class BaseApi { url = '' axiosInstance constructor(base: string) { this.url = base this.axiosInstance = axiosInstance } list(params = {}): Promise { return this.axiosInstance.get(this.url, { params, }) } list_page(params = {}): Promise> { return this.axiosInstance.get(this.url, { params, }) } create(data: Omit): Promise { return this.axiosInstance.post(this.url, data) } retrieve(id: number): Promise { return this.axiosInstance.get(`${this.url}/${id}`) } update(id: number, data: Omit): Promise { return this.axiosInstance.put(`${this.url}/${id}`, data) } partialUpdate(id: number, data: T): Promise { return this.axiosInstance.patch(`${this.url}/${id}`, data) } destroy(id: number): Promise { return this.axiosInstance.delete(`${this.url}/${id}`) } }