@shizuoka-its/core 3.0.0-rc.2 → 3.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"dto.cjs","names":[],"sources":["../../src/application/dto.ts"],"sourcesContent":["import type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport type { DiscordAccount, Member } from \"#domain\";\nimport type { Email } from \"#domain/aggregates/member/Email\";\nimport type { Recorded } from \"#domain/shared/Recorded\";\n\ntype MemberDTOBase = {\n\tid: string;\n\temail: string;\n\tname: string;\n\tpersonalEmail: string | null;\n};\n\nexport type MemberDTO =\n\t| (MemberDTOBase & {\n\t\t\tstatus: \"active\";\n\t\t\tstudentId: string;\n\t\t\taffiliation: CompleteAffiliation;\n\t })\n\t| (MemberDTOBase & { status: \"unconfirmed\" })\n\t| (MemberDTOBase & { status: \"former\" });\n\nexport type DiscordAccountDTO = {\n\tdiscordId: string;\n\tmemberId: string;\n\tnickName: string;\n};\n\nfunction personalEmailToString(personalEmail: Recorded<Email>): string | null {\n\treturn personalEmail.type === \"recorded\" ? personalEmail.value.getValue() : null;\n}\n\nexport function toMemberDTO(member: Member): MemberDTO {\n\tconst base = {\n\t\tid: member.id as string,\n\t\temail: member.email.getValue(),\n\t\tname: member.name,\n\t\tpersonalEmail: personalEmailToString(member.personalEmail),\n\t};\n\n\tif (member.status === \"active\") {\n\t\treturn {\n\t\t\t...base,\n\t\t\tstatus: member.status,\n\t\t\tstudentId: member.studentId.getValue(),\n\t\t\taffiliation: member.affiliation,\n\t\t};\n\t}\n\n\treturn {\n\t\t...base,\n\t\tstatus: member.status,\n\t};\n}\n\nexport function toDiscordAccountDTO(account: DiscordAccount): DiscordAccountDTO {\n\treturn {\n\t\tdiscordId: account.discordId as string,\n\t\tmemberId: account.memberId as string,\n\t\tnickName: account.nickName,\n\t};\n}\n"],"mappings":";AA2BA,SAAS,sBAAsB,eAA+C;AAC7E,QAAO,cAAc,SAAS,aAAa,cAAc,MAAM,UAAU,GAAG;;AAG7E,SAAgB,YAAY,QAA2B;CACtD,MAAM,OAAO;EACZ,IAAI,OAAO;EACX,OAAO,OAAO,MAAM,UAAU;EAC9B,MAAM,OAAO;EACb,eAAe,sBAAsB,OAAO,cAAc;EAC1D;AAED,KAAI,OAAO,WAAW,SACrB,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf,WAAW,OAAO,UAAU,UAAU;EACtC,aAAa,OAAO;EACpB;AAGF,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf;;AAGF,SAAgB,oBAAoB,SAA4C;AAC/E,QAAO;EACN,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,UAAU,QAAQ;EAClB"}
1
+ {"version":3,"file":"dto.cjs","names":[],"sources":["../../src/application/dto.ts"],"sourcesContent":["import type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport type { DiscordAccount, Member } from \"#domain\";\nimport type { Email } from \"#domain/aggregates/member/Email\";\nimport type { Recorded } from \"#domain/shared/Recorded\";\n\ntype MemberDTOBase = {\n\tid: string;\n\temail: string;\n\tname: string;\n\tpersonalEmail: string | null;\n};\n\nexport type MemberDTO =\n\t| (MemberDTOBase & {\n\t\t\tstatus: \"active\";\n\t\t\tstudentId: string;\n\t\t\taffiliation: CompleteAffiliation;\n\t })\n\t| (MemberDTOBase & { status: \"unconfirmed\" })\n\t| (MemberDTOBase & { status: \"former\" });\n\nexport type DiscordAccountDTO = {\n\tdiscordId: string;\n\tmemberId: string;\n\tnickName: string;\n};\n\nfunction personalEmailToString(personalEmail: Recorded<Email>): string | null {\n\treturn personalEmail.type === \"recorded\" ? personalEmail.value.getValue() : null;\n}\n\nexport function toMemberDTO(member: Member): MemberDTO {\n\tconst base = {\n\t\tid: member.id as string,\n\t\temail: member.email.getValue(),\n\t\tname: member.name,\n\t\tpersonalEmail: personalEmailToString(member.personalEmail),\n\t};\n\n\tif (member.status === \"active\") {\n\t\treturn {\n\t\t\t...base,\n\t\t\tstatus: member.status,\n\t\t\tstudentId: member.studentId.getValue(),\n\t\t\taffiliation: member.affiliation,\n\t\t};\n\t}\n\n\treturn {\n\t\t...base,\n\t\tstatus: member.status,\n\t};\n}\n\nexport type MemberWithDiscordAccounts = MemberDTO & {\n\tdiscordAccounts: DiscordAccountDTO[];\n};\n\nexport function toDiscordAccountDTO(account: DiscordAccount): DiscordAccountDTO {\n\treturn {\n\t\tdiscordId: account.discordId as string,\n\t\tmemberId: account.memberId as string,\n\t\tnickName: account.nickName,\n\t};\n}\n"],"mappings":";AA2BA,SAAS,sBAAsB,eAA+C;AAC7E,QAAO,cAAc,SAAS,aAAa,cAAc,MAAM,UAAU,GAAG;;AAG7E,SAAgB,YAAY,QAA2B;CACtD,MAAM,OAAO;EACZ,IAAI,OAAO;EACX,OAAO,OAAO,MAAM,UAAU;EAC9B,MAAM,OAAO;EACb,eAAe,sBAAsB,OAAO,cAAc;EAC1D;AAED,KAAI,OAAO,WAAW,SACrB,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf,WAAW,OAAO,UAAU,UAAU;EACtC,aAAa,OAAO;EACpB;AAGF,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf;;AAOF,SAAgB,oBAAoB,SAA4C;AAC/E,QAAO;EACN,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,UAAU,QAAQ;EAClB"}
@@ -21,6 +21,9 @@ type DiscordAccountDTO = {
21
21
  memberId: string;
22
22
  nickName: string;
23
23
  };
24
+ type MemberWithDiscordAccounts = MemberDTO & {
25
+ discordAccounts: DiscordAccountDTO[];
26
+ };
24
27
  //#endregion
25
- export { DiscordAccountDTO, MemberDTO };
28
+ export { MemberWithDiscordAccounts };
26
29
  //# sourceMappingURL=dto.d.cts.map
@@ -21,6 +21,9 @@ type DiscordAccountDTO = {
21
21
  memberId: string;
22
22
  nickName: string;
23
23
  };
24
+ type MemberWithDiscordAccounts = MemberDTO & {
25
+ discordAccounts: DiscordAccountDTO[];
26
+ };
24
27
  //#endregion
25
- export { DiscordAccountDTO, MemberDTO };
28
+ export { MemberWithDiscordAccounts };
26
29
  //# sourceMappingURL=dto.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dto.mjs","names":[],"sources":["../../src/application/dto.ts"],"sourcesContent":["import type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport type { DiscordAccount, Member } from \"#domain\";\nimport type { Email } from \"#domain/aggregates/member/Email\";\nimport type { Recorded } from \"#domain/shared/Recorded\";\n\ntype MemberDTOBase = {\n\tid: string;\n\temail: string;\n\tname: string;\n\tpersonalEmail: string | null;\n};\n\nexport type MemberDTO =\n\t| (MemberDTOBase & {\n\t\t\tstatus: \"active\";\n\t\t\tstudentId: string;\n\t\t\taffiliation: CompleteAffiliation;\n\t })\n\t| (MemberDTOBase & { status: \"unconfirmed\" })\n\t| (MemberDTOBase & { status: \"former\" });\n\nexport type DiscordAccountDTO = {\n\tdiscordId: string;\n\tmemberId: string;\n\tnickName: string;\n};\n\nfunction personalEmailToString(personalEmail: Recorded<Email>): string | null {\n\treturn personalEmail.type === \"recorded\" ? personalEmail.value.getValue() : null;\n}\n\nexport function toMemberDTO(member: Member): MemberDTO {\n\tconst base = {\n\t\tid: member.id as string,\n\t\temail: member.email.getValue(),\n\t\tname: member.name,\n\t\tpersonalEmail: personalEmailToString(member.personalEmail),\n\t};\n\n\tif (member.status === \"active\") {\n\t\treturn {\n\t\t\t...base,\n\t\t\tstatus: member.status,\n\t\t\tstudentId: member.studentId.getValue(),\n\t\t\taffiliation: member.affiliation,\n\t\t};\n\t}\n\n\treturn {\n\t\t...base,\n\t\tstatus: member.status,\n\t};\n}\n\nexport function toDiscordAccountDTO(account: DiscordAccount): DiscordAccountDTO {\n\treturn {\n\t\tdiscordId: account.discordId as string,\n\t\tmemberId: account.memberId as string,\n\t\tnickName: account.nickName,\n\t};\n}\n"],"mappings":";AA2BA,SAAS,sBAAsB,eAA+C;AAC7E,QAAO,cAAc,SAAS,aAAa,cAAc,MAAM,UAAU,GAAG;;AAG7E,SAAgB,YAAY,QAA2B;CACtD,MAAM,OAAO;EACZ,IAAI,OAAO;EACX,OAAO,OAAO,MAAM,UAAU;EAC9B,MAAM,OAAO;EACb,eAAe,sBAAsB,OAAO,cAAc;EAC1D;AAED,KAAI,OAAO,WAAW,SACrB,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf,WAAW,OAAO,UAAU,UAAU;EACtC,aAAa,OAAO;EACpB;AAGF,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf;;AAGF,SAAgB,oBAAoB,SAA4C;AAC/E,QAAO;EACN,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,UAAU,QAAQ;EAClB"}
1
+ {"version":3,"file":"dto.mjs","names":[],"sources":["../../src/application/dto.ts"],"sourcesContent":["import type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport type { DiscordAccount, Member } from \"#domain\";\nimport type { Email } from \"#domain/aggregates/member/Email\";\nimport type { Recorded } from \"#domain/shared/Recorded\";\n\ntype MemberDTOBase = {\n\tid: string;\n\temail: string;\n\tname: string;\n\tpersonalEmail: string | null;\n};\n\nexport type MemberDTO =\n\t| (MemberDTOBase & {\n\t\t\tstatus: \"active\";\n\t\t\tstudentId: string;\n\t\t\taffiliation: CompleteAffiliation;\n\t })\n\t| (MemberDTOBase & { status: \"unconfirmed\" })\n\t| (MemberDTOBase & { status: \"former\" });\n\nexport type DiscordAccountDTO = {\n\tdiscordId: string;\n\tmemberId: string;\n\tnickName: string;\n};\n\nfunction personalEmailToString(personalEmail: Recorded<Email>): string | null {\n\treturn personalEmail.type === \"recorded\" ? personalEmail.value.getValue() : null;\n}\n\nexport function toMemberDTO(member: Member): MemberDTO {\n\tconst base = {\n\t\tid: member.id as string,\n\t\temail: member.email.getValue(),\n\t\tname: member.name,\n\t\tpersonalEmail: personalEmailToString(member.personalEmail),\n\t};\n\n\tif (member.status === \"active\") {\n\t\treturn {\n\t\t\t...base,\n\t\t\tstatus: member.status,\n\t\t\tstudentId: member.studentId.getValue(),\n\t\t\taffiliation: member.affiliation,\n\t\t};\n\t}\n\n\treturn {\n\t\t...base,\n\t\tstatus: member.status,\n\t};\n}\n\nexport type MemberWithDiscordAccounts = MemberDTO & {\n\tdiscordAccounts: DiscordAccountDTO[];\n};\n\nexport function toDiscordAccountDTO(account: DiscordAccount): DiscordAccountDTO {\n\treturn {\n\t\tdiscordId: account.discordId as string,\n\t\tmemberId: account.memberId as string,\n\t\tnickName: account.nickName,\n\t};\n}\n"],"mappings":";AA2BA,SAAS,sBAAsB,eAA+C;AAC7E,QAAO,cAAc,SAAS,aAAa,cAAc,MAAM,UAAU,GAAG;;AAG7E,SAAgB,YAAY,QAA2B;CACtD,MAAM,OAAO;EACZ,IAAI,OAAO;EACX,OAAO,OAAO,MAAM,UAAU;EAC9B,MAAM,OAAO;EACb,eAAe,sBAAsB,OAAO,cAAc;EAC1D;AAED,KAAI,OAAO,WAAW,SACrB,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf,WAAW,OAAO,UAAU,UAAU;EACtC,aAAa,OAAO;EACpB;AAGF,QAAO;EACN,GAAG;EACH,QAAQ,OAAO;EACf;;AAOF,SAAgB,oBAAoB,SAA4C;AAC/E,QAAO;EACN,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,UAAU,QAAQ;EAClB"}
@@ -0,0 +1,23 @@
1
+ const require_dto = require("../../dto.cjs");
2
+ const require_base = require("../base.cjs");
3
+ //#region src/application/usecase/member/GetMemberWithDiscordAccounts.ts
4
+ var GetMemberWithDiscordAccountsUseCase = class extends require_base.IUseCase {
5
+ constructor(memberRepo, discordRepo) {
6
+ super();
7
+ this.memberRepo = memberRepo;
8
+ this.discordRepo = discordRepo;
9
+ }
10
+ async execute(input) {
11
+ const member = await this.memberRepo.findById(input.id);
12
+ if (!member) return { member: null };
13
+ const discordAccounts = await this.discordRepo.findByMemberId(member.id);
14
+ return { member: {
15
+ ...require_dto.toMemberDTO(member),
16
+ discordAccounts: discordAccounts.map(require_dto.toDiscordAccountDTO)
17
+ } };
18
+ }
19
+ };
20
+ //#endregion
21
+ exports.GetMemberWithDiscordAccountsUseCase = GetMemberWithDiscordAccountsUseCase;
22
+
23
+ //# sourceMappingURL=GetMemberWithDiscordAccounts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMemberWithDiscordAccounts.cjs","names":["IUseCase","toMemberDTO","toDiscordAccountDTO"],"sources":["../../../../src/application/usecase/member/GetMemberWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { MemberWithDiscordAccounts } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport interface GetMemberWithDiscordAccountsInput {\n\tid: MemberId;\n}\n\nexport interface GetMemberWithDiscordAccountsOutput {\n\tmember: MemberWithDiscordAccounts | null;\n}\n\nexport class GetMemberWithDiscordAccountsUseCase extends IUseCase<\n\tGetMemberWithDiscordAccountsInput,\n\tGetMemberWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\tinput: GetMemberWithDiscordAccountsInput,\n\t): Promise<GetMemberWithDiscordAccountsOutput> {\n\t\tconst member = await this.memberRepo.findById(input.id);\n\t\tif (!member) {\n\t\t\treturn { member: null };\n\t\t}\n\n\t\tconst discordAccounts = await this.discordRepo.findByMemberId(member.id);\n\n\t\treturn {\n\t\t\tmember: {\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: discordAccounts.map(toDiscordAccountDTO),\n\t\t\t},\n\t\t};\n\t}\n}\n"],"mappings":";;;AAaA,IAAa,sCAAb,cAAyDA,aAAAA,SAGvD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,OAC8C;EAC9C,MAAM,SAAS,MAAM,KAAK,WAAW,SAAS,MAAM,GAAG;AACvD,MAAI,CAAC,OACJ,QAAO,EAAE,QAAQ,MAAM;EAGxB,MAAM,kBAAkB,MAAM,KAAK,YAAY,eAAe,OAAO,GAAG;AAExE,SAAO,EACN,QAAQ;GACP,GAAGC,YAAAA,YAAY,OAAO;GACtB,iBAAiB,gBAAgB,IAAIC,YAAAA,oBAAoB;GACzD,EACD"}
@@ -0,0 +1,23 @@
1
+ import { toDiscordAccountDTO, toMemberDTO } from "../../dto.mjs";
2
+ import { IUseCase } from "../base.mjs";
3
+ //#region src/application/usecase/member/GetMemberWithDiscordAccounts.ts
4
+ var GetMemberWithDiscordAccountsUseCase = class extends IUseCase {
5
+ constructor(memberRepo, discordRepo) {
6
+ super();
7
+ this.memberRepo = memberRepo;
8
+ this.discordRepo = discordRepo;
9
+ }
10
+ async execute(input) {
11
+ const member = await this.memberRepo.findById(input.id);
12
+ if (!member) return { member: null };
13
+ const discordAccounts = await this.discordRepo.findByMemberId(member.id);
14
+ return { member: {
15
+ ...toMemberDTO(member),
16
+ discordAccounts: discordAccounts.map(toDiscordAccountDTO)
17
+ } };
18
+ }
19
+ };
20
+ //#endregion
21
+ export { GetMemberWithDiscordAccountsUseCase };
22
+
23
+ //# sourceMappingURL=GetMemberWithDiscordAccounts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetMemberWithDiscordAccounts.mjs","names":[],"sources":["../../../../src/application/usecase/member/GetMemberWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { MemberWithDiscordAccounts } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport interface GetMemberWithDiscordAccountsInput {\n\tid: MemberId;\n}\n\nexport interface GetMemberWithDiscordAccountsOutput {\n\tmember: MemberWithDiscordAccounts | null;\n}\n\nexport class GetMemberWithDiscordAccountsUseCase extends IUseCase<\n\tGetMemberWithDiscordAccountsInput,\n\tGetMemberWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\tinput: GetMemberWithDiscordAccountsInput,\n\t): Promise<GetMemberWithDiscordAccountsOutput> {\n\t\tconst member = await this.memberRepo.findById(input.id);\n\t\tif (!member) {\n\t\t\treturn { member: null };\n\t\t}\n\n\t\tconst discordAccounts = await this.discordRepo.findByMemberId(member.id);\n\n\t\treturn {\n\t\t\tmember: {\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: discordAccounts.map(toDiscordAccountDTO),\n\t\t\t},\n\t\t};\n\t}\n}\n"],"mappings":";;;AAaA,IAAa,sCAAb,cAAyD,SAGvD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,OAC8C;EAC9C,MAAM,SAAS,MAAM,KAAK,WAAW,SAAS,MAAM,GAAG;AACvD,MAAI,CAAC,OACJ,QAAO,EAAE,QAAQ,MAAM;EAGxB,MAAM,kBAAkB,MAAM,KAAK,YAAY,eAAe,OAAO,GAAG;AAExE,SAAO,EACN,QAAQ;GACP,GAAG,YAAY,OAAO;GACtB,iBAAiB,gBAAgB,IAAI,oBAAoB;GACzD,EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListMembersWithDiscordAccounts.cjs","names":["IUseCase","toDiscordAccountDTO","toMemberDTO"],"sources":["../../../../src/application/usecase/member/ListMembersWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { DiscordAccountDTO, MemberDTO } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport type ListMembersWithDiscordAccountsInput = Record<string, never>;\n\nexport type MemberWithDiscordAccounts = MemberDTO & {\n\tdiscordAccounts: DiscordAccountDTO[];\n};\n\nexport interface ListMembersWithDiscordAccountsOutput {\n\tentries: MemberWithDiscordAccounts[];\n}\n\nexport class ListMembersWithDiscordAccountsUseCase extends IUseCase<\n\tListMembersWithDiscordAccountsInput,\n\tListMembersWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\t_input: ListMembersWithDiscordAccountsInput,\n\t): Promise<ListMembersWithDiscordAccountsOutput> {\n\t\tconst [members, allDiscordAccounts] = await Promise.all([\n\t\t\tthis.memberRepo.findAll(),\n\t\t\tthis.discordRepo.findAll(),\n\t\t]);\n\n\t\tconst accountsByMemberId = new Map<MemberId, DiscordAccountDTO[]>();\n\t\tfor (const account of allDiscordAccounts) {\n\t\t\tconst existing = accountsByMemberId.get(account.memberId) ?? [];\n\t\t\texisting.push(toDiscordAccountDTO(account));\n\t\t\taccountsByMemberId.set(account.memberId, existing);\n\t\t}\n\n\t\treturn {\n\t\t\tentries: members.map((member) => ({\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: accountsByMemberId.get(member.id) ?? [],\n\t\t\t})),\n\t\t};\n\t}\n}\n"],"mappings":";;;AAeA,IAAa,wCAAb,cAA2DA,aAAAA,SAGzD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,QACgD;EAChD,MAAM,CAAC,SAAS,sBAAsB,MAAM,QAAQ,IAAI,CACvD,KAAK,WAAW,SAAS,EACzB,KAAK,YAAY,SAAS,CAC1B,CAAC;EAEF,MAAM,qCAAqB,IAAI,KAAoC;AACnE,OAAK,MAAM,WAAW,oBAAoB;GACzC,MAAM,WAAW,mBAAmB,IAAI,QAAQ,SAAS,IAAI,EAAE;AAC/D,YAAS,KAAKC,YAAAA,oBAAoB,QAAQ,CAAC;AAC3C,sBAAmB,IAAI,QAAQ,UAAU,SAAS;;AAGnD,SAAO,EACN,SAAS,QAAQ,KAAK,YAAY;GACjC,GAAGC,YAAAA,YAAY,OAAO;GACtB,iBAAiB,mBAAmB,IAAI,OAAO,GAAG,IAAI,EAAE;GACxD,EAAE,EACH"}
1
+ {"version":3,"file":"ListMembersWithDiscordAccounts.cjs","names":["IUseCase","toDiscordAccountDTO","toMemberDTO"],"sources":["../../../../src/application/usecase/member/ListMembersWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { DiscordAccountDTO, MemberWithDiscordAccounts } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport type ListMembersWithDiscordAccountsInput = Record<string, never>;\n\nexport interface ListMembersWithDiscordAccountsOutput {\n\tentries: MemberWithDiscordAccounts[];\n}\n\nexport class ListMembersWithDiscordAccountsUseCase extends IUseCase<\n\tListMembersWithDiscordAccountsInput,\n\tListMembersWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\t_input: ListMembersWithDiscordAccountsInput,\n\t): Promise<ListMembersWithDiscordAccountsOutput> {\n\t\tconst [members, allDiscordAccounts] = await Promise.all([\n\t\t\tthis.memberRepo.findAll(),\n\t\t\tthis.discordRepo.findAll(),\n\t\t]);\n\n\t\tconst accountsByMemberId = new Map<MemberId, DiscordAccountDTO[]>();\n\t\tfor (const account of allDiscordAccounts) {\n\t\t\tconst existing = accountsByMemberId.get(account.memberId) ?? [];\n\t\t\texisting.push(toDiscordAccountDTO(account));\n\t\t\taccountsByMemberId.set(account.memberId, existing);\n\t\t}\n\n\t\treturn {\n\t\t\tentries: members.map((member) => ({\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: accountsByMemberId.get(member.id) ?? [],\n\t\t\t})),\n\t\t};\n\t}\n}\n"],"mappings":";;;AAWA,IAAa,wCAAb,cAA2DA,aAAAA,SAGzD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,QACgD;EAChD,MAAM,CAAC,SAAS,sBAAsB,MAAM,QAAQ,IAAI,CACvD,KAAK,WAAW,SAAS,EACzB,KAAK,YAAY,SAAS,CAC1B,CAAC;EAEF,MAAM,qCAAqB,IAAI,KAAoC;AACnE,OAAK,MAAM,WAAW,oBAAoB;GACzC,MAAM,WAAW,mBAAmB,IAAI,QAAQ,SAAS,IAAI,EAAE;AAC/D,YAAS,KAAKC,YAAAA,oBAAoB,QAAQ,CAAC;AAC3C,sBAAmB,IAAI,QAAQ,UAAU,SAAS;;AAGnD,SAAO,EACN,SAAS,QAAQ,KAAK,YAAY;GACjC,GAAGC,YAAAA,YAAY,OAAO;GACtB,iBAAiB,mBAAmB,IAAI,OAAO,GAAG,IAAI,EAAE;GACxD,EAAE,EACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListMembersWithDiscordAccounts.mjs","names":[],"sources":["../../../../src/application/usecase/member/ListMembersWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { DiscordAccountDTO, MemberDTO } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport type ListMembersWithDiscordAccountsInput = Record<string, never>;\n\nexport type MemberWithDiscordAccounts = MemberDTO & {\n\tdiscordAccounts: DiscordAccountDTO[];\n};\n\nexport interface ListMembersWithDiscordAccountsOutput {\n\tentries: MemberWithDiscordAccounts[];\n}\n\nexport class ListMembersWithDiscordAccountsUseCase extends IUseCase<\n\tListMembersWithDiscordAccountsInput,\n\tListMembersWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\t_input: ListMembersWithDiscordAccountsInput,\n\t): Promise<ListMembersWithDiscordAccountsOutput> {\n\t\tconst [members, allDiscordAccounts] = await Promise.all([\n\t\t\tthis.memberRepo.findAll(),\n\t\t\tthis.discordRepo.findAll(),\n\t\t]);\n\n\t\tconst accountsByMemberId = new Map<MemberId, DiscordAccountDTO[]>();\n\t\tfor (const account of allDiscordAccounts) {\n\t\t\tconst existing = accountsByMemberId.get(account.memberId) ?? [];\n\t\t\texisting.push(toDiscordAccountDTO(account));\n\t\t\taccountsByMemberId.set(account.memberId, existing);\n\t\t}\n\n\t\treturn {\n\t\t\tentries: members.map((member) => ({\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: accountsByMemberId.get(member.id) ?? [],\n\t\t\t})),\n\t\t};\n\t}\n}\n"],"mappings":";;;AAeA,IAAa,wCAAb,cAA2D,SAGzD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,QACgD;EAChD,MAAM,CAAC,SAAS,sBAAsB,MAAM,QAAQ,IAAI,CACvD,KAAK,WAAW,SAAS,EACzB,KAAK,YAAY,SAAS,CAC1B,CAAC;EAEF,MAAM,qCAAqB,IAAI,KAAoC;AACnE,OAAK,MAAM,WAAW,oBAAoB;GACzC,MAAM,WAAW,mBAAmB,IAAI,QAAQ,SAAS,IAAI,EAAE;AAC/D,YAAS,KAAK,oBAAoB,QAAQ,CAAC;AAC3C,sBAAmB,IAAI,QAAQ,UAAU,SAAS;;AAGnD,SAAO,EACN,SAAS,QAAQ,KAAK,YAAY;GACjC,GAAG,YAAY,OAAO;GACtB,iBAAiB,mBAAmB,IAAI,OAAO,GAAG,IAAI,EAAE;GACxD,EAAE,EACH"}
1
+ {"version":3,"file":"ListMembersWithDiscordAccounts.mjs","names":[],"sources":["../../../../src/application/usecase/member/ListMembersWithDiscordAccounts.ts"],"sourcesContent":["import type { DiscordAccountRepository, MemberId, MemberRepository } from \"#domain\";\nimport type { DiscordAccountDTO, MemberWithDiscordAccounts } from \"../../dto\";\nimport { toDiscordAccountDTO, toMemberDTO } from \"../../dto\";\nimport { IUseCase } from \"../base\";\n\nexport type ListMembersWithDiscordAccountsInput = Record<string, never>;\n\nexport interface ListMembersWithDiscordAccountsOutput {\n\tentries: MemberWithDiscordAccounts[];\n}\n\nexport class ListMembersWithDiscordAccountsUseCase extends IUseCase<\n\tListMembersWithDiscordAccountsInput,\n\tListMembersWithDiscordAccountsOutput\n> {\n\tconstructor(\n\t\tprivate readonly memberRepo: MemberRepository,\n\t\tprivate readonly discordRepo: DiscordAccountRepository,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(\n\t\t_input: ListMembersWithDiscordAccountsInput,\n\t): Promise<ListMembersWithDiscordAccountsOutput> {\n\t\tconst [members, allDiscordAccounts] = await Promise.all([\n\t\t\tthis.memberRepo.findAll(),\n\t\t\tthis.discordRepo.findAll(),\n\t\t]);\n\n\t\tconst accountsByMemberId = new Map<MemberId, DiscordAccountDTO[]>();\n\t\tfor (const account of allDiscordAccounts) {\n\t\t\tconst existing = accountsByMemberId.get(account.memberId) ?? [];\n\t\t\texisting.push(toDiscordAccountDTO(account));\n\t\t\taccountsByMemberId.set(account.memberId, existing);\n\t\t}\n\n\t\treturn {\n\t\t\tentries: members.map((member) => ({\n\t\t\t\t...toMemberDTO(member),\n\t\t\t\tdiscordAccounts: accountsByMemberId.get(member.id) ?? [],\n\t\t\t})),\n\t\t};\n\t}\n}\n"],"mappings":";;;AAWA,IAAa,wCAAb,cAA2D,SAGzD;CACD,YACC,YACA,aACC;AACD,SAAO;AAHU,OAAA,aAAA;AACA,OAAA,cAAA;;CAKlB,MAAM,QACL,QACgD;EAChD,MAAM,CAAC,SAAS,sBAAsB,MAAM,QAAQ,IAAI,CACvD,KAAK,WAAW,SAAS,EACzB,KAAK,YAAY,SAAS,CAC1B,CAAC;EAEF,MAAM,qCAAqB,IAAI,KAAoC;AACnE,OAAK,MAAM,WAAW,oBAAoB;GACzC,MAAM,WAAW,mBAAmB,IAAI,QAAQ,SAAS,IAAI,EAAE;AAC/D,YAAS,KAAK,oBAAoB,QAAQ,CAAC;AAC3C,sBAAmB,IAAI,QAAQ,UAAU,SAAS;;AAGnD,SAAO,EACN,SAAS,QAAQ,KAAK,YAAY;GACjC,GAAG,YAAY,OAAO;GACtB,iBAAiB,mBAAmB,IAAI,OAAO,GAAG,IAAI,EAAE;GACxD,EAAE,EACH"}
@@ -9,6 +9,7 @@ const require_ConnectDiscordAccount = require("../application/usecase/member/Con
9
9
  const require_GetMember = require("../application/usecase/member/GetMember.cjs");
10
10
  const require_GetMemberByDiscordId = require("../application/usecase/member/GetMemberByDiscordId.cjs");
11
11
  const require_GetMemberByEmail = require("../application/usecase/member/GetMemberByEmail.cjs");
12
+ const require_GetMemberWithDiscordAccounts = require("../application/usecase/member/GetMemberWithDiscordAccounts.cjs");
12
13
  const require_GetMemberList = require("../application/usecase/member/GetMemberList.cjs");
13
14
  const require_ListMembersWithDiscordAccounts = require("../application/usecase/member/ListMembersWithDiscordAccounts.cjs");
14
15
  const require_RegisterMember = require("../application/usecase/member/RegisterMember.cjs");
@@ -25,6 +26,7 @@ function createMemberService(deps) {
25
26
  const getMemberByEmail = new require_GetMemberByEmail.GetMemberByEmailUseCase(memberRepo);
26
27
  const getMemberByDiscordId = new require_GetMemberByDiscordId.GetMemberByDiscordIdUseCase(discordRepo, memberRepo);
27
28
  const getMemberList = new require_GetMemberList.GetMemberListUseCase(memberRepo);
29
+ const getMemberWithDiscord = new require_GetMemberWithDiscordAccounts.GetMemberWithDiscordAccountsUseCase(memberRepo, discordRepo);
28
30
  const listMembersWithDiscord = new require_ListMembersWithDiscordAccounts.ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);
29
31
  const connectDiscordAccountUC = new require_ConnectDiscordAccount.ConnectDiscordAccountUseCase(memberRepo, discordRepo);
30
32
  const changeDiscordNickNameUC = new require_ChangeDiscordNickName.ChangeDiscordNickNameUseCase(discordRepo);
@@ -46,6 +48,7 @@ function createMemberService(deps) {
46
48
  getByEmail: (email) => getMemberByEmail.execute({ email: new require_UniversityEmail.UniversityEmail(email) }),
47
49
  getByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: require_DiscordId.discordId(id) }),
48
50
  list: () => getMemberList.execute({}),
51
+ getMemberWithDiscordAccounts: (id) => getMemberWithDiscord.execute({ id: require_MemberId.memberId(id) }),
49
52
  listMembersWithDiscordAccounts: () => listMembersWithDiscord.execute({}),
50
53
  connectDiscordAccount: (input) => connectDiscordAccountUC.execute({
51
54
  memberId: require_MemberId.memberId(input.memberId),
@@ -1 +1 @@
1
- {"version":3,"file":"memberService.cjs","names":["DrizzleMemberRepository","DrizzleDiscordAccountRepository","RegisterMemberUseCase","UpdateMemberUseCase","GetMemberUseCase","GetMemberByEmailUseCase","GetMemberByDiscordIdUseCase","GetMemberListUseCase","ListMembersWithDiscordAccountsUseCase","ConnectDiscordAccountUseCase","ChangeDiscordNickNameUseCase","StudentId","UniversityEmail","recorded","Email","notRecorded","memberId","discordId"],"sources":["../../src/executable/memberService.ts"],"sourcesContent":["import {\n\tChangeDiscordNickNameUseCase,\n\tConnectDiscordAccountUseCase,\n\tGetMemberByDiscordIdUseCase,\n\tGetMemberByEmailUseCase,\n\tGetMemberListUseCase,\n\tGetMemberUseCase,\n\tListMembersWithDiscordAccountsUseCase,\n\ttype MemberWithDiscordAccounts,\n\tRegisterMemberUseCase,\n\tUpdateMemberUseCase,\n} from \"#application\";\nimport { discordId } from \"#domain/aggregates/discord-account/DiscordId\";\nimport type { DiscordAccountRepository } from \"#domain/aggregates/discord-account/DiscordAccountRepository\";\nimport type { DiscordAccount } from \"#domain/aggregates/discord-account/DiscordAccount\";\nimport { Email } from \"#domain/aggregates/member/Email\";\nimport type { Member } from \"#domain/aggregates/member/Member\";\nimport { memberId } from \"#domain/aggregates/member/MemberId\";\nimport type { MemberRepository } from \"#domain/aggregates/member/MemberRepository\";\nimport { UniversityEmail } from \"#domain/aggregates/member/UniversityEmail\";\nimport type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport { recorded, notRecorded } from \"#domain/shared/Recorded\";\nimport { StudentId } from \"#domain/shared/StudentId\";\nimport { DrizzleDiscordAccountRepository, DrizzleMemberRepository } from \"#infrastructure\";\n\nexport type { MemberWithDiscordAccounts } from \"#application\";\n\nexport type MemberService = {\n\tregister(input: {\n\t\tname: string;\n\t\tstudentId: string;\n\t\temail: string;\n\t\tpersonalEmail?: string;\n\t\taffiliation: CompleteAffiliation;\n\t}): Promise<{ member: Member }>;\n\n\tupdate(input: {\n\t\tmemberId: string;\n\t\tname?: string;\n\t\tstudentId?: string;\n\t\tpersonalEmail?: string | null;\n\t}): Promise<{ member: Member }>;\n\n\tgetById(id: string): Promise<{ member: Member | null }>;\n\n\tgetByEmail(email: string): Promise<{ member: Member | null }>;\n\n\tgetByDiscordId(discordId: string): Promise<{ member: Member | null }>;\n\n\tlist(): Promise<{ members: Member[] }>;\n\n\tlistMembersWithDiscordAccounts(): Promise<{\n\t\tentries: MemberWithDiscordAccounts[];\n\t}>;\n\n\tconnectDiscordAccount(input: {\n\t\tmemberId: string;\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName?: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n\n\tchangeDiscordNickName(input: {\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n};\n\nexport type MemberServiceDeps = {\n\tmemberRepository?: MemberRepository;\n\tdiscordAccountRepository?: DiscordAccountRepository;\n};\n\nexport function createMemberService(deps?: MemberServiceDeps): MemberService {\n\tconst memberRepo = deps?.memberRepository ?? new DrizzleMemberRepository();\n\tconst discordRepo = deps?.discordAccountRepository ?? new DrizzleDiscordAccountRepository();\n\n\tconst registerMember = new RegisterMemberUseCase(memberRepo);\n\tconst updateMember = new UpdateMemberUseCase(memberRepo);\n\tconst getMember = new GetMemberUseCase(memberRepo);\n\tconst getMemberByEmail = new GetMemberByEmailUseCase(memberRepo);\n\tconst getMemberByDiscordId = new GetMemberByDiscordIdUseCase(discordRepo, memberRepo);\n\tconst getMemberList = new GetMemberListUseCase(memberRepo);\n\tconst listMembersWithDiscord = new ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst connectDiscordAccountUC = new ConnectDiscordAccountUseCase(memberRepo, discordRepo);\n\tconst changeDiscordNickNameUC = new ChangeDiscordNickNameUseCase(discordRepo);\n\n\treturn {\n\t\tregister: (input) =>\n\t\t\tregisterMember.execute({\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: StudentId.fromString(input.studentId),\n\t\t\t\temail: new UniversityEmail(input.email),\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail !== undefined\n\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t: notRecorded(),\n\t\t\t\taffiliation: input.affiliation,\n\t\t\t}),\n\n\t\tupdate: (input) =>\n\t\t\tupdateMember.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: input.studentId ? StudentId.fromString(input.studentId) : undefined,\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail === null\n\t\t\t\t\t\t? notRecorded()\n\t\t\t\t\t\t: input.personalEmail !== undefined\n\t\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t\t: undefined,\n\t\t\t}),\n\n\t\tgetById: (id) => getMember.execute({ id: memberId(id) }),\n\n\t\tgetByEmail: (email) => getMemberByEmail.execute({ email: new UniversityEmail(email) }),\n\n\t\tgetByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: discordId(id) }),\n\n\t\tlist: () => getMemberList.execute({} as Record<string, never>),\n\n\t\tlistMembersWithDiscordAccounts: () =>\n\t\t\tlistMembersWithDiscord.execute({} as Record<string, never>),\n\n\t\tconnectDiscordAccount: (input) =>\n\t\t\tconnectDiscordAccountUC.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\n\t\tchangeDiscordNickName: (input) =>\n\t\t\tchangeDiscordNickNameUC.execute({\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwEA,SAAgB,oBAAoB,MAAyC;CAC5E,MAAM,aAAa,MAAM,oBAAoB,IAAIA,gCAAAA,yBAAyB;CAC1E,MAAM,cAAc,MAAM,4BAA4B,IAAIC,wCAAAA,iCAAiC;CAE3F,MAAM,iBAAiB,IAAIC,uBAAAA,sBAAsB,WAAW;CAC5D,MAAM,eAAe,IAAIC,qBAAAA,oBAAoB,WAAW;CACxD,MAAM,YAAY,IAAIC,kBAAAA,iBAAiB,WAAW;CAClD,MAAM,mBAAmB,IAAIC,yBAAAA,wBAAwB,WAAW;CAChE,MAAM,uBAAuB,IAAIC,6BAAAA,4BAA4B,aAAa,WAAW;CACrF,MAAM,gBAAgB,IAAIC,sBAAAA,qBAAqB,WAAW;CAC1D,MAAM,yBAAyB,IAAIC,uCAAAA,sCAAsC,YAAY,YAAY;CACjG,MAAM,0BAA0B,IAAIC,8BAAAA,6BAA6B,YAAY,YAAY;CACzF,MAAM,0BAA0B,IAAIC,8BAAAA,6BAA6B,YAAY;AAE7E,QAAO;EACN,WAAW,UACV,eAAe,QAAQ;GACtB,MAAM,MAAM;GACZ,WAAWC,kBAAAA,UAAU,WAAW,MAAM,UAAU;GAChD,OAAO,IAAIC,wBAAAA,gBAAgB,MAAM,MAAM;GACvC,eACC,MAAM,kBAAkB,KAAA,IACrBC,iBAAAA,SAAS,IAAIC,cAAAA,MAAM,MAAM,cAAc,CAAC,GACxCC,iBAAAA,aAAa;GACjB,aAAa,MAAM;GACnB,CAAC;EAEH,SAAS,UACR,aAAa,QAAQ;GACpB,UAAUC,iBAAAA,SAAS,MAAM,SAAS;GAClC,MAAM,MAAM;GACZ,WAAW,MAAM,YAAYL,kBAAAA,UAAU,WAAW,MAAM,UAAU,GAAG,KAAA;GACrE,eACC,MAAM,kBAAkB,OACrBI,iBAAAA,aAAa,GACb,MAAM,kBAAkB,KAAA,IACvBF,iBAAAA,SAAS,IAAIC,cAAAA,MAAM,MAAM,cAAc,CAAC,GACxC,KAAA;GACL,CAAC;EAEH,UAAU,OAAO,UAAU,QAAQ,EAAE,IAAIE,iBAAAA,SAAS,GAAG,EAAE,CAAC;EAExD,aAAa,UAAU,iBAAiB,QAAQ,EAAE,OAAO,IAAIJ,wBAAAA,gBAAgB,MAAM,EAAE,CAAC;EAEtF,iBAAiB,OAAO,qBAAqB,QAAQ,EAAE,WAAWK,kBAAAA,UAAU,GAAG,EAAE,CAAC;EAElF,YAAY,cAAc,QAAQ,EAAE,CAA0B;EAE9D,sCACC,uBAAuB,QAAQ,EAAE,CAA0B;EAE5D,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,UAAUD,iBAAAA,SAAS,MAAM,SAAS;GAClC,kBAAkBC,kBAAAA,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EAEH,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,kBAAkBA,kBAAAA,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EACH"}
1
+ {"version":3,"file":"memberService.cjs","names":["DrizzleMemberRepository","DrizzleDiscordAccountRepository","RegisterMemberUseCase","UpdateMemberUseCase","GetMemberUseCase","GetMemberByEmailUseCase","GetMemberByDiscordIdUseCase","GetMemberListUseCase","GetMemberWithDiscordAccountsUseCase","ListMembersWithDiscordAccountsUseCase","ConnectDiscordAccountUseCase","ChangeDiscordNickNameUseCase","StudentId","UniversityEmail","recorded","Email","notRecorded","memberId","discordId"],"sources":["../../src/executable/memberService.ts"],"sourcesContent":["import {\n\tChangeDiscordNickNameUseCase,\n\tConnectDiscordAccountUseCase,\n\tGetMemberByDiscordIdUseCase,\n\tGetMemberByEmailUseCase,\n\tGetMemberListUseCase,\n\tGetMemberUseCase,\n\tGetMemberWithDiscordAccountsUseCase,\n\tListMembersWithDiscordAccountsUseCase,\n\ttype MemberWithDiscordAccounts,\n\tRegisterMemberUseCase,\n\tUpdateMemberUseCase,\n} from \"#application\";\nimport { discordId } from \"#domain/aggregates/discord-account/DiscordId\";\nimport type { DiscordAccountRepository } from \"#domain/aggregates/discord-account/DiscordAccountRepository\";\nimport type { DiscordAccount } from \"#domain/aggregates/discord-account/DiscordAccount\";\nimport { Email } from \"#domain/aggregates/member/Email\";\nimport type { Member } from \"#domain/aggregates/member/Member\";\nimport { memberId } from \"#domain/aggregates/member/MemberId\";\nimport type { MemberRepository } from \"#domain/aggregates/member/MemberRepository\";\nimport { UniversityEmail } from \"#domain/aggregates/member/UniversityEmail\";\nimport type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport { recorded, notRecorded } from \"#domain/shared/Recorded\";\nimport { StudentId } from \"#domain/shared/StudentId\";\nimport { DrizzleDiscordAccountRepository, DrizzleMemberRepository } from \"#infrastructure\";\n\nexport type { MemberWithDiscordAccounts } from \"#application\";\n\nexport type MemberService = {\n\tregister(input: {\n\t\tname: string;\n\t\tstudentId: string;\n\t\temail: string;\n\t\tpersonalEmail?: string;\n\t\taffiliation: CompleteAffiliation;\n\t}): Promise<{ member: Member }>;\n\n\tupdate(input: {\n\t\tmemberId: string;\n\t\tname?: string;\n\t\tstudentId?: string;\n\t\tpersonalEmail?: string | null;\n\t}): Promise<{ member: Member }>;\n\n\tgetById(id: string): Promise<{ member: Member | null }>;\n\n\tgetByEmail(email: string): Promise<{ member: Member | null }>;\n\n\tgetByDiscordId(discordId: string): Promise<{ member: Member | null }>;\n\n\tlist(): Promise<{ members: Member[] }>;\n\n\tgetMemberWithDiscordAccounts(id: string): Promise<{\n\t\tmember: MemberWithDiscordAccounts | null;\n\t}>;\n\n\tlistMembersWithDiscordAccounts(): Promise<{\n\t\tentries: MemberWithDiscordAccounts[];\n\t}>;\n\n\tconnectDiscordAccount(input: {\n\t\tmemberId: string;\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName?: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n\n\tchangeDiscordNickName(input: {\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n};\n\nexport type MemberServiceDeps = {\n\tmemberRepository?: MemberRepository;\n\tdiscordAccountRepository?: DiscordAccountRepository;\n};\n\nexport function createMemberService(deps?: MemberServiceDeps): MemberService {\n\tconst memberRepo = deps?.memberRepository ?? new DrizzleMemberRepository();\n\tconst discordRepo = deps?.discordAccountRepository ?? new DrizzleDiscordAccountRepository();\n\n\tconst registerMember = new RegisterMemberUseCase(memberRepo);\n\tconst updateMember = new UpdateMemberUseCase(memberRepo);\n\tconst getMember = new GetMemberUseCase(memberRepo);\n\tconst getMemberByEmail = new GetMemberByEmailUseCase(memberRepo);\n\tconst getMemberByDiscordId = new GetMemberByDiscordIdUseCase(discordRepo, memberRepo);\n\tconst getMemberList = new GetMemberListUseCase(memberRepo);\n\tconst getMemberWithDiscord = new GetMemberWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst listMembersWithDiscord = new ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst connectDiscordAccountUC = new ConnectDiscordAccountUseCase(memberRepo, discordRepo);\n\tconst changeDiscordNickNameUC = new ChangeDiscordNickNameUseCase(discordRepo);\n\n\treturn {\n\t\tregister: (input) =>\n\t\t\tregisterMember.execute({\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: StudentId.fromString(input.studentId),\n\t\t\t\temail: new UniversityEmail(input.email),\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail !== undefined\n\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t: notRecorded(),\n\t\t\t\taffiliation: input.affiliation,\n\t\t\t}),\n\n\t\tupdate: (input) =>\n\t\t\tupdateMember.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: input.studentId ? StudentId.fromString(input.studentId) : undefined,\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail === null\n\t\t\t\t\t\t? notRecorded()\n\t\t\t\t\t\t: input.personalEmail !== undefined\n\t\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t\t: undefined,\n\t\t\t}),\n\n\t\tgetById: (id) => getMember.execute({ id: memberId(id) }),\n\n\t\tgetByEmail: (email) => getMemberByEmail.execute({ email: new UniversityEmail(email) }),\n\n\t\tgetByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: discordId(id) }),\n\n\t\tlist: () => getMemberList.execute({} as Record<string, never>),\n\n\t\tgetMemberWithDiscordAccounts: (id) => getMemberWithDiscord.execute({ id: memberId(id) }),\n\n\t\tlistMembersWithDiscordAccounts: () =>\n\t\t\tlistMembersWithDiscord.execute({} as Record<string, never>),\n\n\t\tconnectDiscordAccount: (input) =>\n\t\t\tconnectDiscordAccountUC.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\n\t\tchangeDiscordNickName: (input) =>\n\t\t\tchangeDiscordNickNameUC.execute({\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6EA,SAAgB,oBAAoB,MAAyC;CAC5E,MAAM,aAAa,MAAM,oBAAoB,IAAIA,gCAAAA,yBAAyB;CAC1E,MAAM,cAAc,MAAM,4BAA4B,IAAIC,wCAAAA,iCAAiC;CAE3F,MAAM,iBAAiB,IAAIC,uBAAAA,sBAAsB,WAAW;CAC5D,MAAM,eAAe,IAAIC,qBAAAA,oBAAoB,WAAW;CACxD,MAAM,YAAY,IAAIC,kBAAAA,iBAAiB,WAAW;CAClD,MAAM,mBAAmB,IAAIC,yBAAAA,wBAAwB,WAAW;CAChE,MAAM,uBAAuB,IAAIC,6BAAAA,4BAA4B,aAAa,WAAW;CACrF,MAAM,gBAAgB,IAAIC,sBAAAA,qBAAqB,WAAW;CAC1D,MAAM,uBAAuB,IAAIC,qCAAAA,oCAAoC,YAAY,YAAY;CAC7F,MAAM,yBAAyB,IAAIC,uCAAAA,sCAAsC,YAAY,YAAY;CACjG,MAAM,0BAA0B,IAAIC,8BAAAA,6BAA6B,YAAY,YAAY;CACzF,MAAM,0BAA0B,IAAIC,8BAAAA,6BAA6B,YAAY;AAE7E,QAAO;EACN,WAAW,UACV,eAAe,QAAQ;GACtB,MAAM,MAAM;GACZ,WAAWC,kBAAAA,UAAU,WAAW,MAAM,UAAU;GAChD,OAAO,IAAIC,wBAAAA,gBAAgB,MAAM,MAAM;GACvC,eACC,MAAM,kBAAkB,KAAA,IACrBC,iBAAAA,SAAS,IAAIC,cAAAA,MAAM,MAAM,cAAc,CAAC,GACxCC,iBAAAA,aAAa;GACjB,aAAa,MAAM;GACnB,CAAC;EAEH,SAAS,UACR,aAAa,QAAQ;GACpB,UAAUC,iBAAAA,SAAS,MAAM,SAAS;GAClC,MAAM,MAAM;GACZ,WAAW,MAAM,YAAYL,kBAAAA,UAAU,WAAW,MAAM,UAAU,GAAG,KAAA;GACrE,eACC,MAAM,kBAAkB,OACrBI,iBAAAA,aAAa,GACb,MAAM,kBAAkB,KAAA,IACvBF,iBAAAA,SAAS,IAAIC,cAAAA,MAAM,MAAM,cAAc,CAAC,GACxC,KAAA;GACL,CAAC;EAEH,UAAU,OAAO,UAAU,QAAQ,EAAE,IAAIE,iBAAAA,SAAS,GAAG,EAAE,CAAC;EAExD,aAAa,UAAU,iBAAiB,QAAQ,EAAE,OAAO,IAAIJ,wBAAAA,gBAAgB,MAAM,EAAE,CAAC;EAEtF,iBAAiB,OAAO,qBAAqB,QAAQ,EAAE,WAAWK,kBAAAA,UAAU,GAAG,EAAE,CAAC;EAElF,YAAY,cAAc,QAAQ,EAAE,CAA0B;EAE9D,+BAA+B,OAAO,qBAAqB,QAAQ,EAAE,IAAID,iBAAAA,SAAS,GAAG,EAAE,CAAC;EAExF,sCACC,uBAAuB,QAAQ,EAAE,CAA0B;EAE5D,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,UAAUA,iBAAAA,SAAS,MAAM,SAAS;GAClC,kBAAkBC,kBAAAA,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EAEH,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,kBAAkBA,kBAAAA,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EACH"}
@@ -3,7 +3,7 @@ import { DiscordAccount } from "../domain/aggregates/discord-account/DiscordAcco
3
3
  import { DiscordAccountRepository } from "../domain/aggregates/discord-account/DiscordAccountRepository.cjs";
4
4
  import { Member } from "../domain/aggregates/member/Member.cjs";
5
5
  import { MemberRepository } from "../domain/aggregates/member/MemberRepository.cjs";
6
- import { MemberWithDiscordAccounts } from "../application/usecase/member/ListMembersWithDiscordAccounts.cjs";
6
+ import { MemberWithDiscordAccounts } from "../application/dto.cjs";
7
7
 
8
8
  //#region src/executable/memberService.d.ts
9
9
  type MemberService = {
@@ -36,6 +36,9 @@ type MemberService = {
36
36
  list(): Promise<{
37
37
  members: Member[];
38
38
  }>;
39
+ getMemberWithDiscordAccounts(id: string): Promise<{
40
+ member: MemberWithDiscordAccounts | null;
41
+ }>;
39
42
  listMembersWithDiscordAccounts(): Promise<{
40
43
  entries: MemberWithDiscordAccounts[];
41
44
  }>;
@@ -3,7 +3,7 @@ import { DiscordAccount } from "../domain/aggregates/discord-account/DiscordAcco
3
3
  import { DiscordAccountRepository } from "../domain/aggregates/discord-account/DiscordAccountRepository.mjs";
4
4
  import { Member } from "../domain/aggregates/member/Member.mjs";
5
5
  import { MemberRepository } from "../domain/aggregates/member/MemberRepository.mjs";
6
- import { MemberWithDiscordAccounts } from "../application/usecase/member/ListMembersWithDiscordAccounts.mjs";
6
+ import { MemberWithDiscordAccounts } from "../application/dto.mjs";
7
7
 
8
8
  //#region src/executable/memberService.d.ts
9
9
  type MemberService = {
@@ -36,6 +36,9 @@ type MemberService = {
36
36
  list(): Promise<{
37
37
  members: Member[];
38
38
  }>;
39
+ getMemberWithDiscordAccounts(id: string): Promise<{
40
+ member: MemberWithDiscordAccounts | null;
41
+ }>;
39
42
  listMembersWithDiscordAccounts(): Promise<{
40
43
  entries: MemberWithDiscordAccounts[];
41
44
  }>;
@@ -9,6 +9,7 @@ import { ConnectDiscordAccountUseCase } from "../application/usecase/member/Conn
9
9
  import { GetMemberUseCase } from "../application/usecase/member/GetMember.mjs";
10
10
  import { GetMemberByDiscordIdUseCase } from "../application/usecase/member/GetMemberByDiscordId.mjs";
11
11
  import { GetMemberByEmailUseCase } from "../application/usecase/member/GetMemberByEmail.mjs";
12
+ import { GetMemberWithDiscordAccountsUseCase } from "../application/usecase/member/GetMemberWithDiscordAccounts.mjs";
12
13
  import { GetMemberListUseCase } from "../application/usecase/member/GetMemberList.mjs";
13
14
  import { ListMembersWithDiscordAccountsUseCase } from "../application/usecase/member/ListMembersWithDiscordAccounts.mjs";
14
15
  import { RegisterMemberUseCase } from "../application/usecase/member/RegisterMember.mjs";
@@ -25,6 +26,7 @@ function createMemberService(deps) {
25
26
  const getMemberByEmail = new GetMemberByEmailUseCase(memberRepo);
26
27
  const getMemberByDiscordId = new GetMemberByDiscordIdUseCase(discordRepo, memberRepo);
27
28
  const getMemberList = new GetMemberListUseCase(memberRepo);
29
+ const getMemberWithDiscord = new GetMemberWithDiscordAccountsUseCase(memberRepo, discordRepo);
28
30
  const listMembersWithDiscord = new ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);
29
31
  const connectDiscordAccountUC = new ConnectDiscordAccountUseCase(memberRepo, discordRepo);
30
32
  const changeDiscordNickNameUC = new ChangeDiscordNickNameUseCase(discordRepo);
@@ -46,6 +48,7 @@ function createMemberService(deps) {
46
48
  getByEmail: (email) => getMemberByEmail.execute({ email: new UniversityEmail(email) }),
47
49
  getByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: discordId(id) }),
48
50
  list: () => getMemberList.execute({}),
51
+ getMemberWithDiscordAccounts: (id) => getMemberWithDiscord.execute({ id: memberId(id) }),
49
52
  listMembersWithDiscordAccounts: () => listMembersWithDiscord.execute({}),
50
53
  connectDiscordAccount: (input) => connectDiscordAccountUC.execute({
51
54
  memberId: memberId(input.memberId),
@@ -1 +1 @@
1
- {"version":3,"file":"memberService.mjs","names":[],"sources":["../../src/executable/memberService.ts"],"sourcesContent":["import {\n\tChangeDiscordNickNameUseCase,\n\tConnectDiscordAccountUseCase,\n\tGetMemberByDiscordIdUseCase,\n\tGetMemberByEmailUseCase,\n\tGetMemberListUseCase,\n\tGetMemberUseCase,\n\tListMembersWithDiscordAccountsUseCase,\n\ttype MemberWithDiscordAccounts,\n\tRegisterMemberUseCase,\n\tUpdateMemberUseCase,\n} from \"#application\";\nimport { discordId } from \"#domain/aggregates/discord-account/DiscordId\";\nimport type { DiscordAccountRepository } from \"#domain/aggregates/discord-account/DiscordAccountRepository\";\nimport type { DiscordAccount } from \"#domain/aggregates/discord-account/DiscordAccount\";\nimport { Email } from \"#domain/aggregates/member/Email\";\nimport type { Member } from \"#domain/aggregates/member/Member\";\nimport { memberId } from \"#domain/aggregates/member/MemberId\";\nimport type { MemberRepository } from \"#domain/aggregates/member/MemberRepository\";\nimport { UniversityEmail } from \"#domain/aggregates/member/UniversityEmail\";\nimport type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport { recorded, notRecorded } from \"#domain/shared/Recorded\";\nimport { StudentId } from \"#domain/shared/StudentId\";\nimport { DrizzleDiscordAccountRepository, DrizzleMemberRepository } from \"#infrastructure\";\n\nexport type { MemberWithDiscordAccounts } from \"#application\";\n\nexport type MemberService = {\n\tregister(input: {\n\t\tname: string;\n\t\tstudentId: string;\n\t\temail: string;\n\t\tpersonalEmail?: string;\n\t\taffiliation: CompleteAffiliation;\n\t}): Promise<{ member: Member }>;\n\n\tupdate(input: {\n\t\tmemberId: string;\n\t\tname?: string;\n\t\tstudentId?: string;\n\t\tpersonalEmail?: string | null;\n\t}): Promise<{ member: Member }>;\n\n\tgetById(id: string): Promise<{ member: Member | null }>;\n\n\tgetByEmail(email: string): Promise<{ member: Member | null }>;\n\n\tgetByDiscordId(discordId: string): Promise<{ member: Member | null }>;\n\n\tlist(): Promise<{ members: Member[] }>;\n\n\tlistMembersWithDiscordAccounts(): Promise<{\n\t\tentries: MemberWithDiscordAccounts[];\n\t}>;\n\n\tconnectDiscordAccount(input: {\n\t\tmemberId: string;\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName?: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n\n\tchangeDiscordNickName(input: {\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n};\n\nexport type MemberServiceDeps = {\n\tmemberRepository?: MemberRepository;\n\tdiscordAccountRepository?: DiscordAccountRepository;\n};\n\nexport function createMemberService(deps?: MemberServiceDeps): MemberService {\n\tconst memberRepo = deps?.memberRepository ?? new DrizzleMemberRepository();\n\tconst discordRepo = deps?.discordAccountRepository ?? new DrizzleDiscordAccountRepository();\n\n\tconst registerMember = new RegisterMemberUseCase(memberRepo);\n\tconst updateMember = new UpdateMemberUseCase(memberRepo);\n\tconst getMember = new GetMemberUseCase(memberRepo);\n\tconst getMemberByEmail = new GetMemberByEmailUseCase(memberRepo);\n\tconst getMemberByDiscordId = new GetMemberByDiscordIdUseCase(discordRepo, memberRepo);\n\tconst getMemberList = new GetMemberListUseCase(memberRepo);\n\tconst listMembersWithDiscord = new ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst connectDiscordAccountUC = new ConnectDiscordAccountUseCase(memberRepo, discordRepo);\n\tconst changeDiscordNickNameUC = new ChangeDiscordNickNameUseCase(discordRepo);\n\n\treturn {\n\t\tregister: (input) =>\n\t\t\tregisterMember.execute({\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: StudentId.fromString(input.studentId),\n\t\t\t\temail: new UniversityEmail(input.email),\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail !== undefined\n\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t: notRecorded(),\n\t\t\t\taffiliation: input.affiliation,\n\t\t\t}),\n\n\t\tupdate: (input) =>\n\t\t\tupdateMember.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: input.studentId ? StudentId.fromString(input.studentId) : undefined,\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail === null\n\t\t\t\t\t\t? notRecorded()\n\t\t\t\t\t\t: input.personalEmail !== undefined\n\t\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t\t: undefined,\n\t\t\t}),\n\n\t\tgetById: (id) => getMember.execute({ id: memberId(id) }),\n\n\t\tgetByEmail: (email) => getMemberByEmail.execute({ email: new UniversityEmail(email) }),\n\n\t\tgetByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: discordId(id) }),\n\n\t\tlist: () => getMemberList.execute({} as Record<string, never>),\n\n\t\tlistMembersWithDiscordAccounts: () =>\n\t\t\tlistMembersWithDiscord.execute({} as Record<string, never>),\n\n\t\tconnectDiscordAccount: (input) =>\n\t\t\tconnectDiscordAccountUC.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\n\t\tchangeDiscordNickName: (input) =>\n\t\t\tchangeDiscordNickNameUC.execute({\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwEA,SAAgB,oBAAoB,MAAyC;CAC5E,MAAM,aAAa,MAAM,oBAAoB,IAAI,yBAAyB;CAC1E,MAAM,cAAc,MAAM,4BAA4B,IAAI,iCAAiC;CAE3F,MAAM,iBAAiB,IAAI,sBAAsB,WAAW;CAC5D,MAAM,eAAe,IAAI,oBAAoB,WAAW;CACxD,MAAM,YAAY,IAAI,iBAAiB,WAAW;CAClD,MAAM,mBAAmB,IAAI,wBAAwB,WAAW;CAChE,MAAM,uBAAuB,IAAI,4BAA4B,aAAa,WAAW;CACrF,MAAM,gBAAgB,IAAI,qBAAqB,WAAW;CAC1D,MAAM,yBAAyB,IAAI,sCAAsC,YAAY,YAAY;CACjG,MAAM,0BAA0B,IAAI,6BAA6B,YAAY,YAAY;CACzF,MAAM,0BAA0B,IAAI,6BAA6B,YAAY;AAE7E,QAAO;EACN,WAAW,UACV,eAAe,QAAQ;GACtB,MAAM,MAAM;GACZ,WAAW,UAAU,WAAW,MAAM,UAAU;GAChD,OAAO,IAAI,gBAAgB,MAAM,MAAM;GACvC,eACC,MAAM,kBAAkB,KAAA,IACrB,SAAS,IAAI,MAAM,MAAM,cAAc,CAAC,GACxC,aAAa;GACjB,aAAa,MAAM;GACnB,CAAC;EAEH,SAAS,UACR,aAAa,QAAQ;GACpB,UAAU,SAAS,MAAM,SAAS;GAClC,MAAM,MAAM;GACZ,WAAW,MAAM,YAAY,UAAU,WAAW,MAAM,UAAU,GAAG,KAAA;GACrE,eACC,MAAM,kBAAkB,OACrB,aAAa,GACb,MAAM,kBAAkB,KAAA,IACvB,SAAS,IAAI,MAAM,MAAM,cAAc,CAAC,GACxC,KAAA;GACL,CAAC;EAEH,UAAU,OAAO,UAAU,QAAQ,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;EAExD,aAAa,UAAU,iBAAiB,QAAQ,EAAE,OAAO,IAAI,gBAAgB,MAAM,EAAE,CAAC;EAEtF,iBAAiB,OAAO,qBAAqB,QAAQ,EAAE,WAAW,UAAU,GAAG,EAAE,CAAC;EAElF,YAAY,cAAc,QAAQ,EAAE,CAA0B;EAE9D,sCACC,uBAAuB,QAAQ,EAAE,CAA0B;EAE5D,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,UAAU,SAAS,MAAM,SAAS;GAClC,kBAAkB,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EAEH,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,kBAAkB,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EACH"}
1
+ {"version":3,"file":"memberService.mjs","names":[],"sources":["../../src/executable/memberService.ts"],"sourcesContent":["import {\n\tChangeDiscordNickNameUseCase,\n\tConnectDiscordAccountUseCase,\n\tGetMemberByDiscordIdUseCase,\n\tGetMemberByEmailUseCase,\n\tGetMemberListUseCase,\n\tGetMemberUseCase,\n\tGetMemberWithDiscordAccountsUseCase,\n\tListMembersWithDiscordAccountsUseCase,\n\ttype MemberWithDiscordAccounts,\n\tRegisterMemberUseCase,\n\tUpdateMemberUseCase,\n} from \"#application\";\nimport { discordId } from \"#domain/aggregates/discord-account/DiscordId\";\nimport type { DiscordAccountRepository } from \"#domain/aggregates/discord-account/DiscordAccountRepository\";\nimport type { DiscordAccount } from \"#domain/aggregates/discord-account/DiscordAccount\";\nimport { Email } from \"#domain/aggregates/member/Email\";\nimport type { Member } from \"#domain/aggregates/member/Member\";\nimport { memberId } from \"#domain/aggregates/member/MemberId\";\nimport type { MemberRepository } from \"#domain/aggregates/member/MemberRepository\";\nimport { UniversityEmail } from \"#domain/aggregates/member/UniversityEmail\";\nimport type { CompleteAffiliation } from \"#domain/shared/affiliation/Affiliation\";\nimport { recorded, notRecorded } from \"#domain/shared/Recorded\";\nimport { StudentId } from \"#domain/shared/StudentId\";\nimport { DrizzleDiscordAccountRepository, DrizzleMemberRepository } from \"#infrastructure\";\n\nexport type { MemberWithDiscordAccounts } from \"#application\";\n\nexport type MemberService = {\n\tregister(input: {\n\t\tname: string;\n\t\tstudentId: string;\n\t\temail: string;\n\t\tpersonalEmail?: string;\n\t\taffiliation: CompleteAffiliation;\n\t}): Promise<{ member: Member }>;\n\n\tupdate(input: {\n\t\tmemberId: string;\n\t\tname?: string;\n\t\tstudentId?: string;\n\t\tpersonalEmail?: string | null;\n\t}): Promise<{ member: Member }>;\n\n\tgetById(id: string): Promise<{ member: Member | null }>;\n\n\tgetByEmail(email: string): Promise<{ member: Member | null }>;\n\n\tgetByDiscordId(discordId: string): Promise<{ member: Member | null }>;\n\n\tlist(): Promise<{ members: Member[] }>;\n\n\tgetMemberWithDiscordAccounts(id: string): Promise<{\n\t\tmember: MemberWithDiscordAccounts | null;\n\t}>;\n\n\tlistMembersWithDiscordAccounts(): Promise<{\n\t\tentries: MemberWithDiscordAccounts[];\n\t}>;\n\n\tconnectDiscordAccount(input: {\n\t\tmemberId: string;\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName?: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n\n\tchangeDiscordNickName(input: {\n\t\tdiscordAccountId: string;\n\t\tdiscordNickName: string;\n\t}): Promise<{ discordAccount: DiscordAccount }>;\n};\n\nexport type MemberServiceDeps = {\n\tmemberRepository?: MemberRepository;\n\tdiscordAccountRepository?: DiscordAccountRepository;\n};\n\nexport function createMemberService(deps?: MemberServiceDeps): MemberService {\n\tconst memberRepo = deps?.memberRepository ?? new DrizzleMemberRepository();\n\tconst discordRepo = deps?.discordAccountRepository ?? new DrizzleDiscordAccountRepository();\n\n\tconst registerMember = new RegisterMemberUseCase(memberRepo);\n\tconst updateMember = new UpdateMemberUseCase(memberRepo);\n\tconst getMember = new GetMemberUseCase(memberRepo);\n\tconst getMemberByEmail = new GetMemberByEmailUseCase(memberRepo);\n\tconst getMemberByDiscordId = new GetMemberByDiscordIdUseCase(discordRepo, memberRepo);\n\tconst getMemberList = new GetMemberListUseCase(memberRepo);\n\tconst getMemberWithDiscord = new GetMemberWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst listMembersWithDiscord = new ListMembersWithDiscordAccountsUseCase(memberRepo, discordRepo);\n\tconst connectDiscordAccountUC = new ConnectDiscordAccountUseCase(memberRepo, discordRepo);\n\tconst changeDiscordNickNameUC = new ChangeDiscordNickNameUseCase(discordRepo);\n\n\treturn {\n\t\tregister: (input) =>\n\t\t\tregisterMember.execute({\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: StudentId.fromString(input.studentId),\n\t\t\t\temail: new UniversityEmail(input.email),\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail !== undefined\n\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t: notRecorded(),\n\t\t\t\taffiliation: input.affiliation,\n\t\t\t}),\n\n\t\tupdate: (input) =>\n\t\t\tupdateMember.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tname: input.name,\n\t\t\t\tstudentId: input.studentId ? StudentId.fromString(input.studentId) : undefined,\n\t\t\t\tpersonalEmail:\n\t\t\t\t\tinput.personalEmail === null\n\t\t\t\t\t\t? notRecorded()\n\t\t\t\t\t\t: input.personalEmail !== undefined\n\t\t\t\t\t\t\t? recorded(new Email(input.personalEmail))\n\t\t\t\t\t\t\t: undefined,\n\t\t\t}),\n\n\t\tgetById: (id) => getMember.execute({ id: memberId(id) }),\n\n\t\tgetByEmail: (email) => getMemberByEmail.execute({ email: new UniversityEmail(email) }),\n\n\t\tgetByDiscordId: (id) => getMemberByDiscordId.execute({ discordId: discordId(id) }),\n\n\t\tlist: () => getMemberList.execute({} as Record<string, never>),\n\n\t\tgetMemberWithDiscordAccounts: (id) => getMemberWithDiscord.execute({ id: memberId(id) }),\n\n\t\tlistMembersWithDiscordAccounts: () =>\n\t\t\tlistMembersWithDiscord.execute({} as Record<string, never>),\n\n\t\tconnectDiscordAccount: (input) =>\n\t\t\tconnectDiscordAccountUC.execute({\n\t\t\t\tmemberId: memberId(input.memberId),\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\n\t\tchangeDiscordNickName: (input) =>\n\t\t\tchangeDiscordNickNameUC.execute({\n\t\t\t\tdiscordAccountId: discordId(input.discordAccountId),\n\t\t\t\tdiscordNickName: input.discordNickName,\n\t\t\t}),\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA6EA,SAAgB,oBAAoB,MAAyC;CAC5E,MAAM,aAAa,MAAM,oBAAoB,IAAI,yBAAyB;CAC1E,MAAM,cAAc,MAAM,4BAA4B,IAAI,iCAAiC;CAE3F,MAAM,iBAAiB,IAAI,sBAAsB,WAAW;CAC5D,MAAM,eAAe,IAAI,oBAAoB,WAAW;CACxD,MAAM,YAAY,IAAI,iBAAiB,WAAW;CAClD,MAAM,mBAAmB,IAAI,wBAAwB,WAAW;CAChE,MAAM,uBAAuB,IAAI,4BAA4B,aAAa,WAAW;CACrF,MAAM,gBAAgB,IAAI,qBAAqB,WAAW;CAC1D,MAAM,uBAAuB,IAAI,oCAAoC,YAAY,YAAY;CAC7F,MAAM,yBAAyB,IAAI,sCAAsC,YAAY,YAAY;CACjG,MAAM,0BAA0B,IAAI,6BAA6B,YAAY,YAAY;CACzF,MAAM,0BAA0B,IAAI,6BAA6B,YAAY;AAE7E,QAAO;EACN,WAAW,UACV,eAAe,QAAQ;GACtB,MAAM,MAAM;GACZ,WAAW,UAAU,WAAW,MAAM,UAAU;GAChD,OAAO,IAAI,gBAAgB,MAAM,MAAM;GACvC,eACC,MAAM,kBAAkB,KAAA,IACrB,SAAS,IAAI,MAAM,MAAM,cAAc,CAAC,GACxC,aAAa;GACjB,aAAa,MAAM;GACnB,CAAC;EAEH,SAAS,UACR,aAAa,QAAQ;GACpB,UAAU,SAAS,MAAM,SAAS;GAClC,MAAM,MAAM;GACZ,WAAW,MAAM,YAAY,UAAU,WAAW,MAAM,UAAU,GAAG,KAAA;GACrE,eACC,MAAM,kBAAkB,OACrB,aAAa,GACb,MAAM,kBAAkB,KAAA,IACvB,SAAS,IAAI,MAAM,MAAM,cAAc,CAAC,GACxC,KAAA;GACL,CAAC;EAEH,UAAU,OAAO,UAAU,QAAQ,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;EAExD,aAAa,UAAU,iBAAiB,QAAQ,EAAE,OAAO,IAAI,gBAAgB,MAAM,EAAE,CAAC;EAEtF,iBAAiB,OAAO,qBAAqB,QAAQ,EAAE,WAAW,UAAU,GAAG,EAAE,CAAC;EAElF,YAAY,cAAc,QAAQ,EAAE,CAA0B;EAE9D,+BAA+B,OAAO,qBAAqB,QAAQ,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;EAExF,sCACC,uBAAuB,QAAQ,EAAE,CAA0B;EAE5D,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,UAAU,SAAS,MAAM,SAAS;GAClC,kBAAkB,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EAEH,wBAAwB,UACvB,wBAAwB,QAAQ;GAC/B,kBAAkB,UAAU,MAAM,iBAAiB;GACnD,iBAAiB,MAAM;GACvB,CAAC;EACH"}
package/dist/index.d.cts CHANGED
@@ -37,7 +37,7 @@ import { UniversityEmail } from "./domain/aggregates/member/UniversityEmail.cjs"
37
37
  import { DepartmentTransferred, FacultyTransferred, InternallyAdvanced, MEMBER_EVENT_NAMES, MajorTransferred, MemberConfirmed, MemberDomainEvent, MemberRegistered, MemberRemoved, MemberReregistered, MemberUnconfirmed, NameChanged, PersonalEmailChanged, RemovalReason, StudentIdChanged } from "./domain/aggregates/member/MemberEvent.cjs";
38
38
  import { ActiveMember, FormerMember, Member, UnconfirmedMember } from "./domain/aggregates/member/Member.cjs";
39
39
  import { MemberRepository } from "./domain/aggregates/member/MemberRepository.cjs";
40
- import { MemberWithDiscordAccounts } from "./application/usecase/member/ListMembersWithDiscordAccounts.cjs";
40
+ import { MemberWithDiscordAccounts } from "./application/dto.cjs";
41
41
  import { MemberUseCases, createMemberUseCases } from "./executable/member.cjs";
42
42
  import { EventUseCases, createEventUseCases } from "./executable/event.cjs";
43
43
  import { KarteUseCases, createKarteUseCases } from "./executable/karte.cjs";
package/dist/index.d.mts CHANGED
@@ -37,7 +37,7 @@ import { UniversityEmail } from "./domain/aggregates/member/UniversityEmail.mjs"
37
37
  import { DepartmentTransferred, FacultyTransferred, InternallyAdvanced, MEMBER_EVENT_NAMES, MajorTransferred, MemberConfirmed, MemberDomainEvent, MemberRegistered, MemberRemoved, MemberReregistered, MemberUnconfirmed, NameChanged, PersonalEmailChanged, RemovalReason, StudentIdChanged } from "./domain/aggregates/member/MemberEvent.mjs";
38
38
  import { ActiveMember, FormerMember, Member, UnconfirmedMember } from "./domain/aggregates/member/Member.mjs";
39
39
  import { MemberRepository } from "./domain/aggregates/member/MemberRepository.mjs";
40
- import { MemberWithDiscordAccounts } from "./application/usecase/member/ListMembersWithDiscordAccounts.mjs";
40
+ import { MemberWithDiscordAccounts } from "./application/dto.mjs";
41
41
  import { MemberUseCases, createMemberUseCases } from "./executable/member.mjs";
42
42
  import { EventUseCases, createEventUseCases } from "./executable/event.mjs";
43
43
  import { KarteUseCases, createKarteUseCases } from "./executable/karte.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shizuoka-its/core",
3
- "version": "3.0.0-rc.2",
3
+ "version": "3.0.0-rc.3",
4
4
  "description": "ITS core library",
5
5
  "keywords": [],
6
6
  "license": "ISC",
@@ -1,9 +0,0 @@
1
- import { DiscordAccountDTO, MemberDTO } from "../../dto.cjs";
2
-
3
- //#region src/application/usecase/member/ListMembersWithDiscordAccounts.d.ts
4
- type MemberWithDiscordAccounts = MemberDTO & {
5
- discordAccounts: DiscordAccountDTO[];
6
- };
7
- //#endregion
8
- export { MemberWithDiscordAccounts };
9
- //# sourceMappingURL=ListMembersWithDiscordAccounts.d.cts.map
@@ -1,9 +0,0 @@
1
- import { DiscordAccountDTO, MemberDTO } from "../../dto.mjs";
2
-
3
- //#region src/application/usecase/member/ListMembersWithDiscordAccounts.d.ts
4
- type MemberWithDiscordAccounts = MemberDTO & {
5
- discordAccounts: DiscordAccountDTO[];
6
- };
7
- //#endregion
8
- export { MemberWithDiscordAccounts };
9
- //# sourceMappingURL=ListMembersWithDiscordAccounts.d.mts.map