UNPKG

amocrm-client

Version:
39 lines (32 loc) 1.5 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 { hasUpdate, hasCreate, hasGetById, hasGetByCriteria } from "./mixins"; import { LeadCriteria, LeadCreateCriteria, LeadUpdateCriteria } from '../../interfaces/lead'; import { ICustomer, Customer } from '../models/Customer'; export interface ICustomerFactory extends IResourceFactory<ICustomer> { get(criteria?: Partial<LeadCriteria>, options?: IRequestOptions): Promise<ResourcePagination<ICustomer>>; getById(identity: number, criteria?: Pick<LeadCriteria, "with">, options?: IRequestOptions): Promise<ICustomer | null>; create(criteria: (LeadCreateCriteria | ICustomer)[], options?: IRequestOptions): Promise<ICustomer[]>; update(criteria: (LeadUpdateCriteria | ICustomer)[], options?: IRequestOptions): Promise<ICustomer[]>; } export class BaseCustomerFactory extends ResourceFactory<ICustomer> { getEntityClass() { return Customer; } getBaseUrl(): string { return schema.entities.leads.path; } getEmbeddedKey(): string { return 'customers'; } } export const CustomerFactory = applyMixins(BaseCustomerFactory, [ hasGetByCriteria, hasGetById, hasCreate, hasUpdate ]);