Options
All
  • Public
  • Public/Protected
  • All
Menu

Base for Django REST API interactions

example

Usage

Contents of provider.ts

import { BaseProvider } from '@bestdoctor/ke-beta'
import { httpClient } from 'client'

export class Provider extends BaseProvider {
constructor() {
super(axios.create({
baseURL: 'https://localhost/',
}))
}
}

Hierarchy

  • BaseProvider

Implements

Index

Constructors

Properties

options: ProviderOptions = {}
pendingRequests: Record<string, Promise<unknown>> = {}

Accessors

  • get httpClient(): AxiosInstance

Methods

  • delete(resourceUrl: string): Promise<void>
  • get(resourceUrl: string, cacheTime?: number, forceCache?: boolean): Promise<any>
  • getFilters(meta: any, resourceFilters: Filter[]): TableFilter[]
  • Get filters from meta.

    Ignores get-parameters for pagination.

    Parameters

    • meta: any

      response meta

    • resourceFilters: Filter[]

      resourse filters to ignore

    Returns TableFilter[]

  • getList(url: string | URL, filters?: null | Filter[], parameters?: null | GetListParameters, cacheTime?: number, forceCache?: boolean): Promise<Model[]>
  • Load several adjacent pages of resource from backend.

    Try to load several adjacent slices of all resource models. Make request per page.

    Parameters

    • url: string | URL

      resource url

    • filters: null | Filter[] = null

      filters accepted by resource API

    • parameters: null | GetListParameters = null

      list parameters

    • Optional cacheTime: number

      time in seconds for caching result

    • Optional forceCache: boolean

      don't use cache if true

    Returns Promise<Model[]>

  • getObject(resourceUrl: string, cacheTime?: number, forceCache?: boolean): Promise<Model>
  • Load single resource model

    Parameters

    • resourceUrl: string

      resource URL

    • Optional cacheTime: number

      time in seconds for caching result

    • Optional forceCache: boolean

      don't use cache if true

    Returns Promise<Model>

  • getPage(url: string | URL, filters?: null | Filter[], paginationParameters?: null | PaginationParameters, cacheTime?: number, forceCache?: boolean): Promise<[Model[], TableFilter[], Pagination]>
  • Load one 'page' of resource from backend

    Try to load a standard slice of all resource models. Useful for paginated lists.

    Parameters

    • url: string | URL

      resource url

    • filters: null | Filter[] = null

      filters accepted by resource API

    • paginationParameters: null | PaginationParameters = null

      requested pagination parameters

    • Optional cacheTime: number

      time in seconds for caching result

    • Optional forceCache: boolean

      don't use cache if true

    Returns Promise<[Model[], TableFilter[], Pagination]>

  • getPagination(meta: any): Pagination
  • Get pagination from meta.

    Looks for proper keys in meta to determine type of pagination (paged or cursor). Falls back to default paged pagination.

    Parameters

    • meta: any

      response meta

    Returns Pagination

  • getUrl(resourceUrl: string, resourceFilters?: null | Filter[], filters?: null | Filter[], paginationParameters?: null | PaginationParameters): string
  • navigate(url: string, resourceFilters: Filter[], cacheTime?: number, forceCache?: boolean): Promise<[Model[], TableFilter[], Pagination]>
  • Parameters

    • url: string
    • resourceFilters: Filter[]
    • Optional cacheTime: number
    • Optional forceCache: boolean

    Returns Promise<[Model[], TableFilter[], Pagination]>

  • onErrorHandler(error: Error): void
  • parseUrl(baseUrl: string | URL): [string, Filter[]]
  • patch(resourceUrl: string, payload: object): Promise<Model>
  • post(resourceUrl: string, payload: object): Promise<Model>
  • put(resourceUrl: string, payload: object): Promise<Model>

Generated using TypeDoc