amocrm-client
Version:
JS Library for AmoCRM
42 lines (34 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, hasGetById, hasCreate } from "./mixins";
import { UserRoleCreateCriteria, UserRoleUpdateCriteria, UserCriteria } from "../../interfaces/user";
import { IUserRole, UserRole } from "../models/UserRole";
import { hasDeleteById } from "./mixins/hasDeleteById";
export interface IUserRoleFactory extends IResourceFactory<IUserRole> {
get(criteria?: Partial<UserCriteria>, options?: IRequestOptions): Promise<ResourcePagination<IUserRole>>;
getById(identity: number, criteria?: Pick<UserCriteria, "with">, options?: IRequestOptions): Promise<IUserRole | null>;
create(criteria: (UserRoleCreateCriteria | IUserRole)[], options?: IRequestOptions): Promise<IUserRole[]>;
update(criteria: (UserRoleUpdateCriteria | IUserRole)[], options?: IRequestOptions): Promise<IUserRole[]>;
delete(identity: number, options?: IRequestOptions): Promise<boolean>;
}
export class BaseUserRoleFactory extends ResourceFactory<IUserRole> {
getEntityClass() {
return UserRole;
}
getBaseUrl(): string {
return schema.entities.users_roles.path;
}
getEmbeddedKey(): string {
return 'roles';
}
}
export const UserRoleFactory = applyMixins(BaseUserRoleFactory, [
hasGetByCriteria,
hasGetById,
hasCreate,
hasDeleteById,
]);