UNPKG

amocrm-client

Version:
43 lines (32 loc) 1.52 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 } from "../../interfaces/api"; import { hasGetByCriteria, hasCreate, hasGetById, hasUpdate } from "./mixins"; import { CompanyCriteria, CompanyCreateCriteria, CompanyUpdateCriteria } from '../../interfaces/company'; import { ICompany, Company } from '../models/Company'; export interface ICompanyFactory extends IResourceFactory<ICompany> { get(criteria?: Partial<CompanyCriteria>, options?: IRequestOptions): Promise<ResourcePagination<ICompany>>; getById(identity: number, criteria?: Pick<CompanyCriteria, "with">, options?: IRequestOptions): Promise<ICompany | null>; create(criteria: (CompanyCreateCriteria | ICompany)[], options?: IRequestOptions): Promise<ICompany[]>; update(criteria: (CompanyUpdateCriteria | ICompany)[], options?: IRequestOptions): Promise<ICompany[]>; } export class BaseCompanyFactory extends ResourceFactory<ICompany> { getEntityClass() { return Company; } getBaseUrl(): string { return schema.entities.companies.path; } getEmbeddedKey(): string { return 'companies'; } } export const CompanyFactory = applyMixins(BaseCompanyFactory, [ hasGetByCriteria, hasGetById, hasCreate, hasUpdate ]);