UNPKG

amocrm-client

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