@chevre/domain
Version:
Chevre Domain Library for Node.js
169 lines (168 loc) • 4.92 kB
TypeScript
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 {};