UNPKG

amocrm-client

Version:
46 lines (35 loc) 1.76 kB
import schema from '../../schema/v4'; import { applyMixins } from "../../util"; import ResourceFactory from "../ResourceFactory"; import ResourcePagination from "../ResourcePagination"; import { IRequestOptions } from "../../interfaces/common"; import { IResourceFactory, IResourcePagination } from "../../interfaces/api"; import { hasGetByCriteria, hasCreate, hasGetById, hasUpdate } from "./mixins"; import { Catalog, ICatalog } from '../models/Catalog'; import { CatalogCreateCriteria, CatalogCriteria, CatalogElementCriteria, CatalogUpdateCriteria } from '../../interfaces/catalog'; import { hasCatalogElements } from './mixins/hasCatalogElements'; export interface ICatalogFactory extends IResourceFactory<ICatalog> { get(criteria?: Partial<CatalogCriteria>, options?: IRequestOptions): Promise<ResourcePagination<ICatalog>>; getById(identity: number, criteria?: null, options?: IRequestOptions): Promise<ICatalog | null>; create(criteria: (CatalogCreateCriteria | ICatalog)[], options?: IRequestOptions): Promise<ICatalog[]>; update(criteria: (CatalogUpdateCriteria | ICatalog)[], options?: IRequestOptions): Promise<ICatalog[]>; elements(catalogId: number, criteria?: CatalogElementCriteria, options?: IRequestOptions): IResourcePagination<ICatalog>; } export class BaseCatalogFactory extends ResourceFactory<ICatalog> { getEntityClass() { return Catalog; } getBaseUrl(): string { return schema.entities.catalogs.path; } getEmbeddedKey(): string { return 'catalogs'; } } export const CatalogFactory = applyMixins(BaseCatalogFactory, [ hasCatalogElements, hasGetByCriteria, hasGetById, hasCreate, hasUpdate ]);