@shizuoka-its/core 2.0.0-alpha.2 → 2.0.0-alpha.4
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.
- package/dist/application/exceptions/ApplicationExceptions.d.ts +6 -0
- package/dist/application/exceptions/ApplicationExceptions.js +15 -1
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.js +1 -1
- package/dist/application/usecase/base.d.ts +8 -0
- package/dist/application/usecase/base.js +11 -0
- package/dist/application/usecase/event/AddExhibitToEvent.d.ts +23 -0
- package/dist/application/usecase/event/AddExhibitToEvent.js +27 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.d.ts +17 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.js +24 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.d.ts +17 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.js +24 -0
- package/dist/application/usecase/event/ChangeExhibitName.d.ts +17 -0
- package/dist/application/usecase/event/ChangeExhibitName.js +24 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.d.ts +18 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.js +24 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.d.ts +18 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.js +24 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.d.ts +18 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.js +24 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.d.ts +17 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.js +24 -0
- package/dist/application/usecase/event/CreateEvent.d.ts +19 -0
- package/dist/application/usecase/event/CreateEvent.js +25 -0
- package/dist/application/usecase/event/DeleteEvent.d.ts +14 -0
- package/dist/application/usecase/event/DeleteEvent.js +22 -0
- package/dist/application/usecase/event/GetEvent.d.ts +17 -0
- package/dist/application/usecase/event/GetEvent.js +18 -0
- package/dist/application/usecase/event/GetEventList.d.ts +13 -0
- package/dist/application/usecase/event/GetEventList.js +17 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.d.ts +16 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.js +24 -0
- package/dist/application/usecase/event/UpdateEvent.d.ts +17 -0
- package/dist/application/usecase/event/UpdateEvent.js +29 -0
- package/dist/application/usecase/event/index.d.ts +14 -0
- package/dist/application/usecase/event/index.js +30 -0
- package/dist/application/usecase/index.d.ts +3 -9
- package/dist/application/usecase/index.js +3 -9
- package/dist/application/usecase/{ChangeDiscordNickName.d.ts → member/ChangeDiscordNickName.d.ts} +3 -3
- package/dist/application/usecase/{ChangeDiscordNickName.js → member/ChangeDiscordNickName.js} +4 -2
- package/dist/application/usecase/{ConnectDiscordAccount.d.ts → member/ConnectDiscordAccount.d.ts} +2 -2
- package/dist/application/usecase/{ConnectDiscordAccount.js → member/ConnectDiscordAccount.js} +2 -2
- package/dist/application/usecase/{GetMember.d.ts → member/GetMember.d.ts} +2 -2
- package/dist/application/usecase/{GetMemberByDiscordId.d.ts → member/GetMemberByDiscordId.d.ts} +2 -2
- package/dist/application/usecase/{GetMemberByEmail.d.ts → member/GetMemberByEmail.d.ts} +2 -2
- package/dist/application/usecase/{GetMemberList.d.ts → member/GetMemberList.d.ts} +2 -2
- package/dist/application/usecase/{RegisterMember.d.ts → member/RegisterMember.d.ts} +3 -3
- package/dist/application/usecase/{RegisterMember.js → member/RegisterMember.js} +5 -3
- package/dist/application/usecase/member/UpdateMember.d.ts +18 -0
- package/dist/application/usecase/{UpdateMember.js → member/UpdateMember.js} +5 -3
- package/dist/application/usecase/member/index.d.ts +8 -0
- package/dist/application/usecase/member/index.js +24 -0
- package/dist/domain/aggregates/event/Event.d.ts +39 -0
- package/dist/domain/aggregates/event/Event.js +68 -0
- package/dist/domain/aggregates/event/EventRepository.d.ts +7 -0
- package/dist/domain/aggregates/event/Exhibit.d.ts +33 -0
- package/dist/domain/aggregates/event/Exhibit.js +62 -0
- package/dist/domain/aggregates/event/LightningTalk.d.ts +17 -0
- package/dist/domain/aggregates/event/LightningTalk.js +30 -0
- package/dist/domain/aggregates/event/index.d.ts +4 -0
- package/dist/domain/aggregates/event/index.js +20 -0
- package/dist/domain/aggregates/index.d.ts +2 -0
- package/dist/domain/aggregates/index.js +18 -0
- package/dist/domain/{member → aggregates/member}/DiscordAccount.d.ts +5 -0
- package/dist/domain/{member → aggregates/member}/DiscordAccount.js +7 -0
- package/dist/domain/aggregates/member/Member.d.ts +38 -0
- package/dist/domain/{member → aggregates/member}/Member.js +25 -8
- package/dist/domain/aggregates/memberEvent/MemberEvent.d.ts +11 -0
- package/dist/domain/aggregates/memberEvent/MemberEvent.js +18 -0
- package/dist/domain/aggregates/memberEvent/MemberEventRepository.d.ts +8 -0
- package/dist/domain/aggregates/memberEvent/MemberEventRepository.js +2 -0
- package/dist/domain/aggregates/memberExhibit/MemberExhibit.d.ts +11 -0
- package/dist/domain/aggregates/memberExhibit/MemberExhibit.js +18 -0
- package/dist/domain/aggregates/memberExhibit/MemberExhibitRepository.d.ts +8 -0
- package/dist/domain/aggregates/memberExhibit/MemberExhibitRepository.js +2 -0
- package/dist/domain/exceptions/DomainExceptions.d.ts +21 -0
- package/dist/domain/exceptions/DomainExceptions.js +50 -1
- package/dist/domain/index.d.ts +1 -1
- package/dist/domain/index.js +1 -1
- package/dist/domain/value-objects/LightningTalkDuration.d.ts +4 -0
- package/dist/domain/value-objects/LightningTalkDuration.js +11 -0
- package/dist/domain/value-objects/Url.d.ts +4 -0
- package/dist/domain/value-objects/Url.js +19 -0
- package/dist/domain/value-objects/index.d.ts +3 -1
- package/dist/domain/value-objects/index.js +3 -1
- package/dist/executable/event.d.ts +21 -0
- package/dist/executable/event.js +50 -0
- package/dist/executable/member.d.ts +9 -9
- package/dist/infrastructure/prisma/PrismaEventRepository.d.ts +22 -0
- package/dist/infrastructure/prisma/PrismaEventRepository.js +172 -0
- package/dist/infrastructure/prisma/PrismaMemberEventRepository.d.ts +10 -0
- package/dist/infrastructure/prisma/PrismaMemberEventRepository.js +48 -0
- package/dist/infrastructure/prisma/PrismaMemberExhibitRepository.d.ts +10 -0
- package/dist/infrastructure/prisma/PrismaMemberExhibitRepository.js +48 -0
- package/dist/infrastructure/prisma/PrismaMemberRepository.js +14 -13
- package/dist/infrastructure/prisma/index.d.ts +3 -0
- package/dist/infrastructure/prisma/index.js +3 -0
- package/package.json +1 -1
- package/dist/application/usecase/BaseUseCase.d.ts +0 -8
- package/dist/application/usecase/UpdateMember.d.ts +0 -27
- package/dist/domain/member/Member.d.ts +0 -23
- /package/dist/application/usecase/{GetMember.js → member/GetMember.js} +0 -0
- /package/dist/application/usecase/{GetMemberByDiscordId.js → member/GetMemberByDiscordId.js} +0 -0
- /package/dist/application/usecase/{GetMemberByEmail.js → member/GetMemberByEmail.js} +0 -0
- /package/dist/application/usecase/{GetMemberList.js → member/GetMemberList.js} +0 -0
- /package/dist/{application/usecase/BaseUseCase.js → domain/aggregates/event/EventRepository.js} +0 -0
- /package/dist/domain/{member → aggregates/member}/MemberRepository.d.ts +0 -0
- /package/dist/domain/{member → aggregates/member}/MemberRepository.js +0 -0
- /package/dist/domain/{member → aggregates/member}/index.d.ts +0 -0
- /package/dist/domain/{member → aggregates/member}/index.js +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Department } from "../../value-objects/Departments";
|
|
2
|
+
import type { Email } from "../../value-objects/Email";
|
|
3
|
+
import type { UniversityEmail } from "../../value-objects/UniversityEmail";
|
|
4
|
+
import type { DiscordAccount } from "./DiscordAccount";
|
|
5
|
+
export declare class Member {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
private name;
|
|
8
|
+
private studentId;
|
|
9
|
+
private department;
|
|
10
|
+
private email;
|
|
11
|
+
private personalEmail?;
|
|
12
|
+
private discordAccounts;
|
|
13
|
+
constructor(id: string, name: string, studentId: string, department: Department, email: UniversityEmail, personalEmail?: Email | undefined);
|
|
14
|
+
setName(newName: string): void;
|
|
15
|
+
setStudentId(newStudentId: string): void;
|
|
16
|
+
setDepartment(newDepartment: Department): void;
|
|
17
|
+
setEmail(newEmail: UniversityEmail): void;
|
|
18
|
+
setPersonalEmail(newPersonalEmail?: Email): void;
|
|
19
|
+
addDiscordAccount(discordAccount: DiscordAccount): void;
|
|
20
|
+
removeDiscordAccount(discordAccountId: string): void;
|
|
21
|
+
getDiscordAccounts(): DiscordAccount[];
|
|
22
|
+
getDiscordAccountById(discordAccountId: string): DiscordAccount | undefined;
|
|
23
|
+
getDiscordAccountOrThrow(discordAccountId: string): DiscordAccount;
|
|
24
|
+
setDiscordAccountNickName(discordAccountId: string, newNickName: string): void;
|
|
25
|
+
toSnapshot(): {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
studentId: string;
|
|
29
|
+
department: Department;
|
|
30
|
+
email: UniversityEmail;
|
|
31
|
+
personalEmail: Email | undefined;
|
|
32
|
+
discordAccounts: {
|
|
33
|
+
id: string;
|
|
34
|
+
nickName: string;
|
|
35
|
+
memberId: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Member = void 0;
|
|
4
|
-
const DomainExceptions_1 = require("
|
|
4
|
+
const DomainExceptions_1 = require("../../exceptions/DomainExceptions");
|
|
5
5
|
class Member {
|
|
6
6
|
constructor(id, name, studentId, department, email, personalEmail) {
|
|
7
7
|
this.id = id;
|
|
@@ -28,18 +28,14 @@ class Member {
|
|
|
28
28
|
this.personalEmail = newPersonalEmail;
|
|
29
29
|
}
|
|
30
30
|
addDiscordAccount(discordAccount) {
|
|
31
|
-
|
|
32
|
-
if (existingAccount) {
|
|
31
|
+
if (this.getDiscordAccountById(discordAccount.id)) {
|
|
33
32
|
throw new DomainExceptions_1.DiscordAccountAlreadyConnectedException();
|
|
34
33
|
}
|
|
35
34
|
this.discordAccounts.push(discordAccount);
|
|
36
35
|
}
|
|
37
36
|
removeDiscordAccount(discordAccountId) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
throw new DomainExceptions_1.DiscordAccountNotConnectedException();
|
|
41
|
-
}
|
|
42
|
-
this.discordAccounts.splice(accountIndex, 1);
|
|
37
|
+
this.getDiscordAccountOrThrow(discordAccountId);
|
|
38
|
+
this.discordAccounts = this.discordAccounts.filter((account) => account.id !== discordAccountId);
|
|
43
39
|
}
|
|
44
40
|
getDiscordAccounts() {
|
|
45
41
|
return this.discordAccounts;
|
|
@@ -47,5 +43,26 @@ class Member {
|
|
|
47
43
|
getDiscordAccountById(discordAccountId) {
|
|
48
44
|
return this.discordAccounts.find((account) => account.id === discordAccountId);
|
|
49
45
|
}
|
|
46
|
+
getDiscordAccountOrThrow(discordAccountId) {
|
|
47
|
+
const account = this.getDiscordAccountById(discordAccountId);
|
|
48
|
+
if (!account) {
|
|
49
|
+
throw new DomainExceptions_1.DiscordAccountNotConnectedException();
|
|
50
|
+
}
|
|
51
|
+
return account;
|
|
52
|
+
}
|
|
53
|
+
setDiscordAccountNickName(discordAccountId, newNickName) {
|
|
54
|
+
this.getDiscordAccountOrThrow(discordAccountId).setNickName(newNickName);
|
|
55
|
+
}
|
|
56
|
+
toSnapshot() {
|
|
57
|
+
return {
|
|
58
|
+
id: this.id,
|
|
59
|
+
name: this.name,
|
|
60
|
+
studentId: this.studentId,
|
|
61
|
+
department: this.department,
|
|
62
|
+
email: this.email,
|
|
63
|
+
personalEmail: this.personalEmail,
|
|
64
|
+
discordAccounts: this.discordAccounts.map((account) => account.toSnapshot()),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
50
67
|
}
|
|
51
68
|
exports.Member = Member;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemberEvent = void 0;
|
|
4
|
+
class MemberEvent {
|
|
5
|
+
constructor(id, memberId, eventId) {
|
|
6
|
+
this.id = id;
|
|
7
|
+
this.memberId = memberId;
|
|
8
|
+
this.eventId = eventId;
|
|
9
|
+
}
|
|
10
|
+
toSnapshot() {
|
|
11
|
+
return {
|
|
12
|
+
id: this.id,
|
|
13
|
+
memberId: this.memberId,
|
|
14
|
+
eventId: this.eventId,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.MemberEvent = MemberEvent;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MemberEvent } from "./MemberEvent";
|
|
2
|
+
export interface MemberEventRepository {
|
|
3
|
+
findById(id: string): Promise<MemberEvent | null>;
|
|
4
|
+
findByMemberId(memberId: string): Promise<MemberEvent[]>;
|
|
5
|
+
findByEventId(eventId: string): Promise<MemberEvent[]>;
|
|
6
|
+
save(memberEvent: MemberEvent): Promise<void>;
|
|
7
|
+
delete(id: string): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class MemberExhibit {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly memberId: string;
|
|
4
|
+
readonly exhibitId: string;
|
|
5
|
+
constructor(id: string, memberId: string, exhibitId: string);
|
|
6
|
+
toSnapshot(): {
|
|
7
|
+
id: string;
|
|
8
|
+
memberId: string;
|
|
9
|
+
exhibitId: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemberExhibit = void 0;
|
|
4
|
+
class MemberExhibit {
|
|
5
|
+
constructor(id, memberId, exhibitId) {
|
|
6
|
+
this.id = id;
|
|
7
|
+
this.memberId = memberId;
|
|
8
|
+
this.exhibitId = exhibitId;
|
|
9
|
+
}
|
|
10
|
+
toSnapshot() {
|
|
11
|
+
return {
|
|
12
|
+
id: this.id,
|
|
13
|
+
memberId: this.memberId,
|
|
14
|
+
exhibitId: this.exhibitId,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.MemberExhibit = MemberExhibit;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MemberExhibit } from "./MemberExhibit";
|
|
2
|
+
export interface MemberExhibitRepository {
|
|
3
|
+
findById(id: string): Promise<MemberExhibit | null>;
|
|
4
|
+
findByMemberId(memberId: string): Promise<MemberExhibit[]>;
|
|
5
|
+
findByExhibitId(exhibitId: string): Promise<MemberExhibit[]>;
|
|
6
|
+
save(memberExhibit: MemberExhibit): Promise<void>;
|
|
7
|
+
delete(id: string): Promise<void>;
|
|
8
|
+
}
|
|
@@ -19,3 +19,24 @@ export declare class InvalidUniversityEmailException extends DomainException {
|
|
|
19
19
|
export declare class InvalidDepartmentException extends DomainException {
|
|
20
20
|
constructor(message?: string);
|
|
21
21
|
}
|
|
22
|
+
export declare class InvalidLightningTalkDurationException extends DomainException {
|
|
23
|
+
constructor(message?: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class InvalidUrlException extends DomainException {
|
|
26
|
+
constructor(message?: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class InvalidUrlProtocolException extends DomainException {
|
|
29
|
+
constructor(message?: string);
|
|
30
|
+
}
|
|
31
|
+
export declare class ExhibitAlreadyExistsException extends DomainException {
|
|
32
|
+
constructor(message?: string);
|
|
33
|
+
}
|
|
34
|
+
export declare class ExhibitNotFoundException extends DomainException {
|
|
35
|
+
constructor(message?: string);
|
|
36
|
+
}
|
|
37
|
+
export declare class LightningTalkNotFoundException extends DomainException {
|
|
38
|
+
constructor(message?: string);
|
|
39
|
+
}
|
|
40
|
+
export declare class LightningTalkExhibitIdMismatchException extends DomainException {
|
|
41
|
+
constructor(message?: string);
|
|
42
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidDepartmentException = exports.InvalidUniversityEmailException = exports.DiscordAccountNotConnectedException = exports.DiscordAccountAlreadyConnectedException = exports.InvalidEmailFormatException = exports.InvalidMemberException = exports.DomainException = void 0;
|
|
3
|
+
exports.LightningTalkExhibitIdMismatchException = exports.LightningTalkNotFoundException = exports.ExhibitNotFoundException = exports.ExhibitAlreadyExistsException = exports.InvalidUrlProtocolException = exports.InvalidUrlException = exports.InvalidLightningTalkDurationException = exports.InvalidDepartmentException = exports.InvalidUniversityEmailException = exports.DiscordAccountNotConnectedException = exports.DiscordAccountAlreadyConnectedException = exports.InvalidEmailFormatException = exports.InvalidMemberException = exports.DomainException = void 0;
|
|
4
4
|
class DomainException extends Error {
|
|
5
5
|
constructor(message) {
|
|
6
6
|
super(message);
|
|
@@ -50,3 +50,52 @@ class InvalidDepartmentException extends DomainException {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.InvalidDepartmentException = InvalidDepartmentException;
|
|
53
|
+
class InvalidLightningTalkDurationException extends DomainException {
|
|
54
|
+
constructor(message = "無効なライトニングトークの長さです") {
|
|
55
|
+
super(message);
|
|
56
|
+
this.name = "InvalidLightningTalkDurationException";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.InvalidLightningTalkDurationException = InvalidLightningTalkDurationException;
|
|
60
|
+
class InvalidUrlException extends DomainException {
|
|
61
|
+
constructor(message = "無効なURLです") {
|
|
62
|
+
super(message);
|
|
63
|
+
this.name = "InvalidUrlException";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.InvalidUrlException = InvalidUrlException;
|
|
67
|
+
class InvalidUrlProtocolException extends DomainException {
|
|
68
|
+
constructor(message = "指定されたURLのプロトコルは許可されていません。httpまたはhttpsを使用してください。") {
|
|
69
|
+
super(message);
|
|
70
|
+
this.name = "InvalidUrlProtocolException";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.InvalidUrlProtocolException = InvalidUrlProtocolException;
|
|
74
|
+
class ExhibitAlreadyExistsException extends DomainException {
|
|
75
|
+
constructor(message = "既に同一の展示が登録されています") {
|
|
76
|
+
super(message);
|
|
77
|
+
this.name = "ExhibitAlreadyExistsException";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ExhibitAlreadyExistsException = ExhibitAlreadyExistsException;
|
|
81
|
+
class ExhibitNotFoundException extends DomainException {
|
|
82
|
+
constructor(message = "指定された展示が見つかりません") {
|
|
83
|
+
super(message);
|
|
84
|
+
this.name = "ExhibitNotFoundException";
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.ExhibitNotFoundException = ExhibitNotFoundException;
|
|
88
|
+
class LightningTalkNotFoundException extends DomainException {
|
|
89
|
+
constructor(message = "指定されたライトニングトークが見つかりません") {
|
|
90
|
+
super(message);
|
|
91
|
+
this.name = "LightningTalkNotFoundException";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.LightningTalkNotFoundException = LightningTalkNotFoundException;
|
|
95
|
+
class LightningTalkExhibitIdMismatchException extends DomainException {
|
|
96
|
+
constructor(message = "指定されたライトニングトークのidが展示のidと一致していません") {
|
|
97
|
+
super(message);
|
|
98
|
+
this.name = "LightningTalkExhibitIdMismatchException";
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.LightningTalkExhibitIdMismatchException = LightningTalkExhibitIdMismatchException;
|
package/dist/domain/index.d.ts
CHANGED
package/dist/domain/index.js
CHANGED
|
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./member"), exports);
|
|
18
17
|
__exportStar(require("./value-objects"), exports);
|
|
19
18
|
__exportStar(require("./exceptions"), exports);
|
|
19
|
+
__exportStar(require("./aggregates"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LightningTalkDuration = void 0;
|
|
4
|
+
const exceptions_1 = require("../exceptions");
|
|
5
|
+
const ValueObject_1 = require("./ValueObject");
|
|
6
|
+
class LightningTalkDuration extends ValueObject_1.ValueObject {
|
|
7
|
+
validate() {
|
|
8
|
+
this.throwIfInvalid(this.value > 0, new exceptions_1.InvalidLightningTalkDurationException());
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.LightningTalkDuration = LightningTalkDuration;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Url = void 0;
|
|
4
|
+
const exceptions_1 = require("../exceptions");
|
|
5
|
+
const ValueObject_1 = require("./ValueObject");
|
|
6
|
+
class Url extends ValueObject_1.ValueObject {
|
|
7
|
+
validate() {
|
|
8
|
+
let parsed;
|
|
9
|
+
try {
|
|
10
|
+
parsed = new URL(this.value);
|
|
11
|
+
}
|
|
12
|
+
catch (_a) {
|
|
13
|
+
this.throwIfInvalid(false, new exceptions_1.InvalidUrlException(`無効な URL 形式です: ${this.value}`));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
this.throwIfInvalid(["http:", "https:"].includes(parsed.protocol), new exceptions_1.InvalidUrlProtocolException());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.Url = Url;
|
|
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Departments"), exports);
|
|
17
18
|
__exportStar(require("./Email"), exports);
|
|
19
|
+
__exportStar(require("./LightningTalkDuration"), exports);
|
|
18
20
|
__exportStar(require("./UniversityEmail"), exports);
|
|
19
|
-
__exportStar(require("./
|
|
21
|
+
__exportStar(require("./Url"), exports);
|
|
20
22
|
__exportStar(require("./ValueObject"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as eventUsecases from "../application/usecase/event";
|
|
2
|
+
export type EventUseCases = {
|
|
3
|
+
createEvent: eventUsecases.CreateEvent;
|
|
4
|
+
updateEvent: eventUsecases.UpdateEvent;
|
|
5
|
+
deleteEvent: eventUsecases.DeleteEvent;
|
|
6
|
+
getEvent: eventUsecases.GetEvent;
|
|
7
|
+
getEventList: eventUsecases.GetEventList;
|
|
8
|
+
addExhibitToEvent: eventUsecases.AddExhibitToEvent;
|
|
9
|
+
changeExhibitDescription: eventUsecases.ChangeExhibitDescription;
|
|
10
|
+
changeExhibitMarkdownContent: eventUsecases.ChangeExhibitMarkdownContent;
|
|
11
|
+
changeExhibitName: eventUsecases.ChangeExhibitName;
|
|
12
|
+
changeExhibitUrl: eventUsecases.ChangeExhibitUrl;
|
|
13
|
+
changeLightningTalkDuration: eventUsecases.ChangeLightningTalkDuration;
|
|
14
|
+
changeLightningTalkSlideUrl: eventUsecases.ChangeLightningTalkSlideUrl;
|
|
15
|
+
changeLightningTalkStartTime: eventUsecases.ChangeLightningTalkStartTime;
|
|
16
|
+
removeExhibitFromEvent: eventUsecases.RemoveExhibitFromEvent;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @beta 将来的にAPIが変更される可能性があります。
|
|
20
|
+
*/
|
|
21
|
+
export declare function createEventUseCases(): EventUseCases;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.createEventUseCases = createEventUseCases;
|
|
27
|
+
const eventUsecases = __importStar(require("../application/usecase/event"));
|
|
28
|
+
const infrastructure_1 = require("../infrastructure");
|
|
29
|
+
/**
|
|
30
|
+
* @beta 将来的にAPIが変更される可能性があります。
|
|
31
|
+
*/
|
|
32
|
+
function createEventUseCases() {
|
|
33
|
+
const eventRepo = new infrastructure_1.PrismaEventRepository();
|
|
34
|
+
return {
|
|
35
|
+
createEvent: new eventUsecases.CreateEvent(eventRepo),
|
|
36
|
+
updateEvent: new eventUsecases.UpdateEvent(eventRepo),
|
|
37
|
+
deleteEvent: new eventUsecases.DeleteEvent(eventRepo),
|
|
38
|
+
getEvent: new eventUsecases.GetEvent(eventRepo),
|
|
39
|
+
getEventList: new eventUsecases.GetEventList(eventRepo),
|
|
40
|
+
addExhibitToEvent: new eventUsecases.AddExhibitToEvent(eventRepo),
|
|
41
|
+
changeExhibitDescription: new eventUsecases.ChangeExhibitDescription(eventRepo),
|
|
42
|
+
changeExhibitMarkdownContent: new eventUsecases.ChangeExhibitMarkdownContent(eventRepo),
|
|
43
|
+
changeExhibitName: new eventUsecases.ChangeExhibitName(eventRepo),
|
|
44
|
+
changeExhibitUrl: new eventUsecases.ChangeExhibitUrl(eventRepo),
|
|
45
|
+
changeLightningTalkDuration: new eventUsecases.ChangeLightningTalkDuration(eventRepo),
|
|
46
|
+
changeLightningTalkSlideUrl: new eventUsecases.ChangeLightningTalkSlideUrl(eventRepo),
|
|
47
|
+
changeLightningTalkStartTime: new eventUsecases.ChangeLightningTalkStartTime(eventRepo),
|
|
48
|
+
removeExhibitFromEvent: new eventUsecases.RemoveExhibitFromEvent(eventRepo),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ChangeDiscordNickNameUseCase, ConnectDiscordAccountUseCase, GetMemberByDiscordIdUseCase, GetMemberByEmailUseCase, GetMemberListUseCase, GetMemberUseCase, RegisterMemberUseCase, UpdateMemberUseCase } from "../application";
|
|
2
2
|
export type MemberUseCases = {
|
|
3
|
-
registerMember:
|
|
4
|
-
updateMember:
|
|
5
|
-
getMember:
|
|
6
|
-
getMemberByEmail:
|
|
7
|
-
getMemberByDiscordId:
|
|
8
|
-
getMemberList:
|
|
9
|
-
changeDiscordNickName:
|
|
10
|
-
connectDiscordAccount:
|
|
3
|
+
registerMember: RegisterMemberUseCase;
|
|
4
|
+
updateMember: UpdateMemberUseCase;
|
|
5
|
+
getMember: GetMemberUseCase;
|
|
6
|
+
getMemberByEmail: GetMemberByEmailUseCase;
|
|
7
|
+
getMemberByDiscordId: GetMemberByDiscordIdUseCase;
|
|
8
|
+
getMemberList: GetMemberListUseCase;
|
|
9
|
+
changeDiscordNickName: ChangeDiscordNickNameUseCase;
|
|
10
|
+
connectDiscordAccount: ConnectDiscordAccountUseCase;
|
|
11
11
|
};
|
|
12
12
|
export declare function createMemberUseCases(): MemberUseCases;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EventRepository } from "../../domain/aggregates/event";
|
|
2
|
+
import { Event } from "../../domain/aggregates/event";
|
|
3
|
+
export declare class PrismaEventRepository implements EventRepository {
|
|
4
|
+
/**
|
|
5
|
+
* Prisma の Record から ドメインの Event を構築
|
|
6
|
+
* Exhibit.createWithLightningTalk() を使用して lightningTalk を持つ Exhibit を生成
|
|
7
|
+
*/
|
|
8
|
+
private toDomain;
|
|
9
|
+
/**
|
|
10
|
+
* DBへEventを保存するためのヘルパー
|
|
11
|
+
* Event, Exhibit, LightningTalk の upsert処理を行う
|
|
12
|
+
*/
|
|
13
|
+
private persistEvent;
|
|
14
|
+
/**
|
|
15
|
+
* どの ExhibitID が消えたかを調べるヘルパー
|
|
16
|
+
*/
|
|
17
|
+
private findObsoleteExhibitIds;
|
|
18
|
+
findById(id: string): Promise<Event | null>;
|
|
19
|
+
findAll(): Promise<Event[]>;
|
|
20
|
+
save(event: Event): Promise<void>;
|
|
21
|
+
delete(eventId: string): Promise<void>;
|
|
22
|
+
}
|