connection.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import {DataPersisterArgs, DataProviderArgs} from "~/types/interfaces";
  2. import {HTTP_METHOD} from "~/types/enums";
  3. import {NuxtAxiosInstance} from "@nuxtjs/axios";
  4. import {AxiosRequestConfig} from "axios";
  5. class Connection{
  6. static connector:NuxtAxiosInstance;
  7. constructor() {
  8. }
  9. static initConnector(connector: NuxtAxiosInstance){
  10. Connection.connector = connector
  11. }
  12. async invoke(method: HTTP_METHOD, url: string, args:DataProviderArgs|DataPersisterArgs): Promise<any>{
  13. switch (method) {
  14. case HTTP_METHOD.GET:
  15. if(args.id)
  16. return await this.getItem(url, args.id)
  17. else
  18. return await this.getCollection(url)
  19. }
  20. return null
  21. }
  22. private async getItem(url: string, id: number): Promise<any>{
  23. const config:AxiosRequestConfig = {
  24. url: `${url}/${id}`,
  25. method: HTTP_METHOD.GET,
  26. }
  27. return await this.request(config)
  28. }
  29. private async getCollection(url: string): Promise<any>{
  30. const config:AxiosRequestConfig = {
  31. url: `${url}`,
  32. method: HTTP_METHOD.GET,
  33. }
  34. return await this.request(config)
  35. }
  36. private async request(config:AxiosRequestConfig){
  37. return await Connection.connector.$request(config)
  38. }
  39. }
  40. export default Connection