data.d.ts 1.4 KB

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