amocrm-client
Version:
JS Library for AmoCRM
44 lines (33 loc) • 1.65 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 { hasGetByCriteria, hasCreate, hasGetById, hasUpdate } from "./mixins";
import { CompanyCriteria, CompanyCreateCriteria, CompanyUpdateCriteria } from '../../interfaces/company';
import { ICompany, Company } from '../models/Company';
import { CatalogElement, ICatalogElement } from '../models/CatalogElement';
export interface ICatalogElementFactory extends IResourceFactory<ICatalogElement> {
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 BaseCatalogElementFactory extends ResourceFactory<ICatalogElement> {
getEntityClass() {
return CatalogElement;
}
getBaseUrl(): string {
return schema.entities.catalogs.path;
}
getEmbeddedKey(): string {
return 'elements';
}
}
export const CatalogElementFactory = applyMixins(BaseCatalogElementFactory, [
hasGetByCriteria,
hasGetById,
hasCreate,
hasUpdate
]);