@chevre/domain
Version: 
Chevre Domain Library for Node.js
46 lines (45 loc) • 1.72 kB
TypeScript
import type { Connection, FilterQuery } from 'mongoose';
import * as factory from '../factory';
import { IDocType } from './mongoose/schemas/role';
type IRole = IDocType;
type IKeyOfProjection = keyof IDocType;
/**
 * IAMロールリポジトリ
 */
export declare class RoleRepo {
    private readonly roleModel;
    constructor(connection: Connection);
    static CREATE_MONGO_CONDITIONS(params: factory.role.organizationRole.ISearchConditions): FilterQuery<IDocType>[];
    projectFields(params: factory.role.organizationRole.ISearchConditions, inclusion: IKeyOfProjection[]): Promise<IRole[]>;
    /**
     * distinctコマンドを使用して、ロールから権限を検索する
     */
    findUniquePermissionsByRoleName(params: {
        roleName: {
            $in: string[];
        };
    }): Promise<string[]>;
    addPermissionIfNotExists(params: {
        roleName: {
            $eq: factory.role.organizationRole.RoleName;
        };
        permission: string;
    }): Promise<(import("mongoose").FlattenMaps<IDocType> & {
        _id: import("mongoose").Types.ObjectId;
    }) | null>;
    removePermissionIfExists(params: {
        roleName: {
            $eq: factory.role.organizationRole.RoleName;
        };
        permission: string;
    }): Promise<(import("mongoose").FlattenMaps<IDocType> & {
        _id: import("mongoose").Types.ObjectId;
    }) | null>;
    addMember(params: Pick<IRole, 'member' | 'memberOf' | 'roleName'>): Promise<(import("mongoose").FlattenMaps<IDocType> & {
        _id: import("mongoose").Types.ObjectId;
    }) | null>;
    create(params: Pick<IRole, 'member' | 'memberOf' | 'permissions' | 'roleName'>): Promise<{
        id: string;
    }>;
}
export {};