data.d.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import type ApiResource from '~/models/ApiResource'
  2. import type { EnumChoice } from '~/types/interfaces'
  3. import type { Query as PiniaOrmQuery } from 'pinia-orm'
  4. type AnyJson = Record<string, unknown>
  5. interface AssociativeArray {
  6. [key: string]: unknown
  7. }
  8. interface Connector {
  9. request(
  10. method: HTTP_METHOD,
  11. url: string,
  12. body: null | unknown,
  13. params: null | AssociativeArray,
  14. query: null | AssociativeArray,
  15. )
  16. }
  17. interface HydraMetadata {
  18. readonly totalItems?: number
  19. first?: number
  20. last?: number
  21. next?: number
  22. previous?: number
  23. type?: METADATA_TYPE
  24. }
  25. interface ApiResponse {
  26. data: AnyJson | ApiResource | (AnyJson | ApiResource)[]
  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<T extends ApiResource> {
  40. items: Array<T>
  41. pagination: Pagination
  42. totalItems: number | undefined
  43. }
  44. interface ApiFilter {
  45. applyToPiniaOrmQuery: <T extends ApiResource>(
  46. query: PiniaOrmQuery<T>,
  47. ) => PiniaOrmQuery<T>
  48. getApiQueryPart: () => string
  49. }
  50. interface EnumItem {
  51. value: string
  52. label: string
  53. }
  54. interface CollectionResponse {
  55. member: Array<AnyJson>
  56. totalItems: number
  57. }
  58. type CollectionResponsePromise = Response<CollectionResponse>
  59. type Enum = Array<EnumChoice>