UNPKG

amocrm-client

Version:
41 lines (30 loc) 1.36 kB
import schema from '../../schema/v4'; import { applyMixins } from "../../util"; import ResourceFactory from "../ResourceFactory"; import { IRequestOptions } from "../../interfaces/common"; import { IEntityAttributes, IResourceFactory } from "../../interfaces/api"; import { plainToClassFromExist } from "class-transformer"; import { AccountCriteria } from '../../interfaces/account'; import { IAccount, Account } from '../models/Account'; export interface IAccountFactory extends IResourceFactory<IAccount> { get(criteria?: AccountCriteria, options?: IRequestOptions): Promise<IAccount>; } export class BaseAccountFactory extends ResourceFactory<IAccount> implements IAccountFactory { async get(criteria?: AccountCriteria, options?: IRequestOptions): Promise<IAccount> { const url = this.getUrl(); const request = this.getRequest(); const { data } = await request.get<IEntityAttributes>(url, criteria, options); const instance = plainToClassFromExist(this.createEntity(), data); return instance; } getEntityClass() { return Account; } getBaseUrl(): string { return schema.entities.account.path; } getEmbeddedKey(): string { return ''; } } export const AccountFactory = applyMixins(BaseAccountFactory, []);