import {DataPersisterArgs, DataProviderArgs} from "~/types/interfaces"; import {HTTP_METHOD} from "~/types/enums"; import {NuxtAxiosInstance} from "@nuxtjs/axios"; import {AxiosRequestConfig} from "axios"; class Connection{ static connector:NuxtAxiosInstance; constructor() { } static initConnector(connector: NuxtAxiosInstance){ Connection.connector = connector } async invoke(method: HTTP_METHOD, url: string, args:DataProviderArgs|DataPersisterArgs): Promise{ switch (method) { case HTTP_METHOD.GET: if(args.id) return await this.getItem(url, args.id) else return await this.getCollection(url) } return null } private async getItem(url: string, id: number): Promise{ const config:AxiosRequestConfig = { url: `${url}/${id}`, method: HTTP_METHOD.GET, } return await this.request(config) } private async getCollection(url: string): Promise{ const config:AxiosRequestConfig = { url: `${url}`, method: HTTP_METHOD.GET, } return await this.request(config) } private async request(config:AxiosRequestConfig){ return await Connection.connector.$request(config) } } export default Connection