UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

169 lines (168 loc) 4.92 kB
import type { Connection, FilterQuery } from 'mongoose'; import * as factory from '../factory'; type IKeyOfProjection = keyof factory.iam.IMember; export type ICustomerMember = Pick<factory.iam.IMemberOfRole, 'hasRole' | 'id' | 'name' | 'memberOf'>; /** * IAMメンバーリポジトリ */ export declare class MemberRepo { private readonly memberModel; constructor(connection: Connection); static CREATE_MONGO_CONDITIONS(params: factory.iam.ISearchConditions): FilterQuery<factory.iam.IMember>[]; /** * プロジェクト指定で検索する */ projectFieldsByProjectId(project: { id: string; }, conditions: Omit<factory.iam.ISearchConditions, 'project'>, inclusion: IKeyOfProjection[]): Promise<factory.iam.IMember[]>; /** * 注文取引クライアントメンバーを検索する * 全プロジェクトで利用可能なクライアントも考慮される */ searchCustomerMembers(params: Pick<factory.iam.ISearchConditions, 'sort'> & { limit: number; page: number; project: { id: string; }; member?: { id?: { $eq?: string; $in?: string[]; }; name?: { $regex?: string; }; }; }): Promise<{ member: ICustomerMember; }[]>; aggregateRoleNames(params: { project: { id: { $eq: string; }; }; member: { id: { $eq: string; }; memberOf: { id: { $eq: string; }; typeOf: { $eq: factory.organizationType.Corporation | factory.organizationType.Project; }; }; }; }): Promise<{ roleName: string; }[]>; deleteByProject(params: { project: { id: string; }; }): Promise<void>; /** * メンバー作成 */ create(params: factory.iam.IMember[]): Promise<void>; /** * メンバー更新 */ updateByMemberId(params: { project: { id: string; }; member: { id: string; memberOf: { id: string; typeOf: factory.organizationType.Corporation | factory.organizationType.Project; }; hasRole?: factory.iam.IMemberRole[]; image?: string; name?: string; }; $unset: { 'member.member'?: 1; }; }): Promise<void>; /** * メンバー削除 */ deleteByMemberId(params: { project: { id: string; }; member: { id: string; memberOf: { id: { $eq: string; }; typeOf: { $eq: factory.organizationType.Corporation | factory.organizationType.Project; }; }; }; }): Promise<void>; deleteManyByMemberOfId(params: { project: { id: string; }; member: { memberOf: { id: { $eq: string; }; typeOf: { $eq: factory.organizationType.Corporation | factory.organizationType.Project; }; }; }; }): Promise<import("mongodb").DeleteResult>; /** * メンバーの権限を持つプロジェクト検索 */ searchProjectIdsByMemberId(params: { member: { id: string; }; project?: { id?: { $eq?: string; $regex?: string; }; }; limit: number; page: number; }): Promise<string[]>; /** * member.memberOf.typeOfからmember.memberOf.idのリストを検索する * 権限を持つ販売者IDの検索など */ searchMemberOfIdsByMemberId(params: { member: { id: string; memberOf: { typeOf: factory.organizationType.Corporation | factory.organizationType.Project; }; }; project: { id: string; }; }): Promise<string[]>; getCursor(conditions: any, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, {}, factory.iam.IMember> & factory.iam.IMember & { _id: import("mongoose").Types.ObjectId; }, import("mongoose").QueryOptions<import("mongoose").Document<unknown, {}, factory.iam.IMember> & factory.iam.IMember & { _id: import("mongoose").Types.ObjectId; }>>; unsetUnnecessaryFields(params: { filter: any; $unset: any; }): Promise<import("mongoose").UpdateWriteOpResult>; private projectFields; } export {};