amocrm-client
Version:
JS Library for AmoCRM
37 lines (30 loc) • 1.29 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, 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,
]);