data.d.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import ApiResource from '~/models/ApiResource'
  2. import type { EnumChoice } from '~/types/interfaces'
  3. import type {Query as PiniaOrmQuery, Collection as PiniaOrmCollection} from "pinia-orm";
  4. type AnyJson = Record<string, any>
  5. interface AssociativeArray {
  6. [key: string]: any
  7. }
  8. interface Connector {
  9. request(
  10. method: HTTP_METHOD,
  11. url: string,
  12. body: null | any,
  13. params: null | AssociativeArray,
  14. query: null | AssociativeArray,
  15. )
  16. }
  17. interface HydraMetadata {
  18. readonly totalItems?: number
  19. firstPage?: number
  20. lastPage?: number
  21. nextPage?: number
  22. previousPage?: number
  23. type?: METADATA_TYPE
  24. }
  25. interface ApiResponse {
  26. data: AnyJson
  27. metadata: HydraMetadata
  28. }
  29. interface ApiCollection extends ApiResponse {
  30. data: AnyJson
  31. metadata: HydraMetadata
  32. }
  33. interface Pagination {
  34. first?: number
  35. last?: number
  36. next?: number
  37. previous?: number
  38. }
  39. interface Collection {
  40. items: PiniaOrmCollection<ApiResource>
  41. pagination: Pagination
  42. totalItems: number | undefined
  43. }
  44. interface ApiFilter {
  45. applyToPiniaOrmQuery: (query: PiniaOrmQuery<ApiResource>) => PiniaOrmQuery<ApiResource>
  46. getApiQueryPart: () => string
  47. }
  48. interface EnumItem {
  49. value: string
  50. label: string
  51. }
  52. type Enum = Array<EnumChoice>