data.d.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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)[] | EnumApiResponse
  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 EnumApiResponse extends AnyJson {
  55. name: string
  56. items: Record<string, string>
  57. }
  58. interface CollectionResponse {
  59. member: Array<AnyJson>
  60. totalItems: number
  61. }
  62. type CollectionResponsePromise = Response<CollectionResponse>
  63. type Enum = Array<EnumChoice>