data.d.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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, any>
  8. interface AssociativeArray {
  9. [key: string]: any
  10. }
  11. interface Connector {
  12. request(
  13. method: HTTP_METHOD,
  14. url: string,
  15. body: null | any,
  16. params: null | AssociativeArray,
  17. query: null | AssociativeArray,
  18. )
  19. }
  20. interface HydraMetadata {
  21. readonly totalItems?: number
  22. firstPage?: number
  23. lastPage?: number
  24. nextPage?: number
  25. previousPage?: 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 {
  43. items: PiniaOrmCollection<ApiResource>
  44. pagination: Pagination
  45. totalItems: number | undefined
  46. }
  47. interface ApiFilter {
  48. applyToPiniaOrmQuery: (
  49. query: PiniaOrmQuery<ApiResource>,
  50. ) => PiniaOrmQuery<ApiResource>
  51. getApiQueryPart: () => string
  52. }
  53. interface EnumItem {
  54. value: string
  55. label: string
  56. }
  57. type Enum = Array<EnumChoice>