UNPKG

amocrm-client

Version:
37 lines (30 loc) 1.29 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 { hasGetByCriteria, hasGetById, hasCreate } from "./mixins"; import { UserCriteria, UserCreateCriteria } from '../../interfaces/user'; import { IUser, User } from '../models/User'; export interface IUserFactory extends IResourceFactory<IUser> { get(criteria?: Partial<UserCriteria>, options?: IRequestOptions): Promise<ResourcePagination<IUser>>; getById(identity: number, criteria?: Pick<UserCriteria, "with">, options?: IRequestOptions): Promise<IUser | null>; create(criteria: (UserCreateCriteria | IUser)[], options?: IRequestOptions): Promise<IUser[]>; } export class BaseUserFactory extends ResourceFactory<IUser> { getEntityClass() { return User; } getBaseUrl(): string { return schema.entities.users.path; } getEmbeddedKey(): string { return 'users'; } } export const UserFactory = applyMixins(BaseUserFactory, [ hasGetByCriteria, hasGetById, hasCreate, ]);