UNPKG

amocrm-client

Version:
40 lines (32 loc) 1.51 kB
import { applyMixins } from "../../util"; import schema from "../../schema/v4"; import ResourceFactory from "../ResourceFactory"; import { IRequestOptions } from "../../interfaces/common"; import ResourcePagination from "../ResourcePagination"; import { IResourceFactory } from "../../interfaces/api"; import { hasGetByCriteria, hasCreate, hasGetById, hasUpdate } from "./mixins"; import { ContactCriteria, ContactCreateCriteria, ContactUpdateCriteria } from "../../interfaces/contact"; import { IContact, Contact } from "../models/Contact"; export interface IContactFactory extends IResourceFactory<IContact> { get(criteria?: Partial<ContactCriteria>, options?: IRequestOptions): Promise<ResourcePagination<IContact>>; getById(identity: number, criteria?: Pick<ContactCriteria, "with">, options?: IRequestOptions): Promise<IContact | null>; create(criteria: (ContactCreateCriteria | IContact)[], options?: IRequestOptions): Promise<IContact[]>; update(criteria: (ContactUpdateCriteria | IContact)[], options?: IRequestOptions): Promise<IContact[]>; } export class BaseContactFactory extends ResourceFactory<IContact> { getEntityClass() { return Contact; } getBaseUrl(): string { return schema.entities.contacts.path; } getEmbeddedKey(): string { return 'contacts'; } } export const ContactFactory = applyMixins(BaseContactFactory, [ hasGetByCriteria, hasGetById, hasCreate, hasUpdate ]);