amocrm-client
Version:
JS Library for AmoCRM
39 lines (32 loc) • 1.44 kB
text/typescript
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
]);