@shizuoka-its/core 2.0.0-alpha.3 → 2.0.0-alpha.5

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.
Files changed (91) hide show
  1. package/dist/application/exceptions/ApplicationExceptions.d.ts +6 -0
  2. package/dist/application/exceptions/ApplicationExceptions.js +15 -1
  3. package/dist/application/index.d.ts +1 -1
  4. package/dist/application/index.js +1 -1
  5. package/dist/application/usecase/base.d.ts +8 -0
  6. package/dist/application/usecase/base.js +11 -0
  7. package/dist/application/usecase/event/AddExhibitToEvent.d.ts +23 -0
  8. package/dist/application/usecase/event/AddExhibitToEvent.js +27 -0
  9. package/dist/application/usecase/event/ChangeExhibitDescription.d.ts +17 -0
  10. package/dist/application/usecase/event/ChangeExhibitDescription.js +24 -0
  11. package/dist/application/usecase/event/ChangeExhibitMarkdownContent.d.ts +17 -0
  12. package/dist/application/usecase/event/ChangeExhibitMarkdownContent.js +24 -0
  13. package/dist/application/usecase/event/ChangeExhibitName.d.ts +17 -0
  14. package/dist/application/usecase/event/ChangeExhibitName.js +24 -0
  15. package/dist/application/usecase/event/ChangeExhibitUrl.d.ts +18 -0
  16. package/dist/application/usecase/event/ChangeExhibitUrl.js +24 -0
  17. package/dist/application/usecase/event/ChangeLightningTalkDuration.d.ts +18 -0
  18. package/dist/application/usecase/event/ChangeLightningTalkDuration.js +24 -0
  19. package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.d.ts +18 -0
  20. package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.js +24 -0
  21. package/dist/application/usecase/event/ChangeLightningTalkStartTime.d.ts +17 -0
  22. package/dist/application/usecase/event/ChangeLightningTalkStartTime.js +24 -0
  23. package/dist/application/usecase/event/CreateEvent.d.ts +19 -0
  24. package/dist/application/usecase/event/CreateEvent.js +25 -0
  25. package/dist/application/usecase/event/DeleteEvent.d.ts +14 -0
  26. package/dist/application/usecase/event/DeleteEvent.js +22 -0
  27. package/dist/application/usecase/event/GetEvent.d.ts +17 -0
  28. package/dist/application/usecase/event/GetEvent.js +18 -0
  29. package/dist/application/usecase/event/GetEventList.d.ts +13 -0
  30. package/dist/application/usecase/event/GetEventList.js +17 -0
  31. package/dist/application/usecase/event/RemoveExhibitFromEvent.d.ts +16 -0
  32. package/dist/application/usecase/event/RemoveExhibitFromEvent.js +24 -0
  33. package/dist/application/usecase/event/UpdateEvent.d.ts +17 -0
  34. package/dist/application/usecase/event/UpdateEvent.js +29 -0
  35. package/dist/application/usecase/event/index.d.ts +14 -0
  36. package/dist/application/usecase/event/index.js +30 -0
  37. package/dist/application/usecase/eventParticipation/GetEventsByMember.d.ts +11 -0
  38. package/dist/application/usecase/eventParticipation/GetEventsByMember.js +12 -0
  39. package/dist/application/usecase/eventParticipation/GetExhibitsByMember.d.ts +11 -0
  40. package/dist/application/usecase/eventParticipation/GetExhibitsByMember.js +21 -0
  41. package/dist/application/usecase/eventParticipation/GetMembersByEvent.d.ts +13 -0
  42. package/dist/application/usecase/eventParticipation/GetMembersByEvent.js +20 -0
  43. package/dist/application/usecase/eventParticipation/GetMembersByExhibit.d.ts +13 -0
  44. package/dist/application/usecase/eventParticipation/GetMembersByExhibit.js +21 -0
  45. package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.d.ts +12 -0
  46. package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.js +23 -0
  47. package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.d.ts +12 -0
  48. package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.js +23 -0
  49. package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.d.ts +12 -0
  50. package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.js +19 -0
  51. package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.d.ts +12 -0
  52. package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.js +19 -0
  53. package/dist/application/usecase/eventParticipation/index.d.ts +8 -0
  54. package/dist/application/usecase/eventParticipation/index.js +25 -0
  55. package/dist/application/usecase/index.d.ts +3 -9
  56. package/dist/application/usecase/index.js +3 -9
  57. package/dist/application/usecase/{ChangeDiscordNickName.d.ts → member/ChangeDiscordNickName.d.ts} +3 -3
  58. package/dist/application/usecase/{ChangeDiscordNickName.js → member/ChangeDiscordNickName.js} +4 -2
  59. package/dist/application/usecase/{ConnectDiscordAccount.d.ts → member/ConnectDiscordAccount.d.ts} +2 -2
  60. package/dist/application/usecase/{ConnectDiscordAccount.js → member/ConnectDiscordAccount.js} +2 -2
  61. package/dist/application/usecase/{GetMember.d.ts → member/GetMember.d.ts} +2 -2
  62. package/dist/application/usecase/{GetMemberByDiscordId.d.ts → member/GetMemberByDiscordId.d.ts} +2 -2
  63. package/dist/application/usecase/{GetMemberByEmail.d.ts → member/GetMemberByEmail.d.ts} +2 -2
  64. package/dist/application/usecase/{GetMemberList.d.ts → member/GetMemberList.d.ts} +2 -2
  65. package/dist/application/usecase/{RegisterMember.d.ts → member/RegisterMember.d.ts} +3 -3
  66. package/dist/application/usecase/{RegisterMember.js → member/RegisterMember.js} +5 -3
  67. package/dist/application/usecase/member/UpdateMember.d.ts +18 -0
  68. package/dist/application/usecase/{UpdateMember.js → member/UpdateMember.js} +5 -3
  69. package/dist/application/usecase/member/index.d.ts +8 -0
  70. package/dist/application/usecase/member/index.js +24 -0
  71. package/dist/domain/aggregates/event/Event.d.ts +8 -0
  72. package/dist/domain/aggregates/event/Event.js +29 -0
  73. package/dist/domain/aggregates/event/EventRepository.d.ts +2 -0
  74. package/dist/domain/aggregates/event/Exhibit.d.ts +6 -0
  75. package/dist/domain/aggregates/event/Exhibit.js +20 -0
  76. package/dist/domain/exceptions/DomainExceptions.d.ts +6 -0
  77. package/dist/domain/exceptions/DomainExceptions.js +15 -1
  78. package/dist/executable/event.d.ts +21 -0
  79. package/dist/executable/event.js +50 -0
  80. package/dist/infrastructure/prisma/PrismaEventRepository.d.ts +24 -0
  81. package/dist/infrastructure/prisma/PrismaEventRepository.js +240 -0
  82. package/dist/infrastructure/prisma/index.d.ts +1 -0
  83. package/dist/infrastructure/prisma/index.js +1 -0
  84. package/package.json +1 -1
  85. package/dist/application/usecase/BaseUseCase.d.ts +0 -8
  86. package/dist/application/usecase/BaseUseCase.js +0 -2
  87. package/dist/application/usecase/UpdateMember.d.ts +0 -27
  88. /package/dist/application/usecase/{GetMember.js → member/GetMember.js} +0 -0
  89. /package/dist/application/usecase/{GetMemberByDiscordId.js → member/GetMemberByDiscordId.js} +0 -0
  90. /package/dist/application/usecase/{GetMemberByEmail.js → member/GetMemberByEmail.js} +0 -0
  91. /package/dist/application/usecase/{GetMemberList.js → member/GetMemberList.js} +0 -0
@@ -1,6 +1,12 @@
1
1
  export declare class ApplicationException extends Error {
2
2
  constructor(message: string);
3
3
  }
4
+ export declare class EventNotFoundException extends ApplicationException {
5
+ constructor(message?: string);
6
+ }
7
+ export declare class ExhibitNotFoundException extends ApplicationException {
8
+ constructor(message?: string);
9
+ }
4
10
  export declare class MemberEmailAlreadyExistsException extends ApplicationException {
5
11
  constructor(message?: string);
6
12
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DiscordAccountNotConnectedException = exports.MemberNotFoundException = exports.MemberEmailAlreadyExistsException = exports.ApplicationException = void 0;
3
+ exports.DiscordAccountNotConnectedException = exports.MemberNotFoundException = exports.MemberEmailAlreadyExistsException = exports.ExhibitNotFoundException = exports.EventNotFoundException = exports.ApplicationException = void 0;
4
4
  class ApplicationException extends Error {
5
5
  constructor(message) {
6
6
  super(message);
@@ -8,6 +8,20 @@ class ApplicationException extends Error {
8
8
  }
9
9
  }
10
10
  exports.ApplicationException = ApplicationException;
11
+ class EventNotFoundException extends ApplicationException {
12
+ constructor(message = "イベントが見つかりません") {
13
+ super(message);
14
+ this.name = "EventNotFoundException";
15
+ }
16
+ }
17
+ exports.EventNotFoundException = EventNotFoundException;
18
+ class ExhibitNotFoundException extends ApplicationException {
19
+ constructor(message = "展示が見つかりません") {
20
+ super(message);
21
+ this.name = "ExhibitNotFoundException";
22
+ }
23
+ }
24
+ exports.ExhibitNotFoundException = ExhibitNotFoundException;
11
25
  class MemberEmailAlreadyExistsException extends ApplicationException {
12
26
  constructor(message = "このメールアドレスは既に登録されています") {
13
27
  super(message);
@@ -1,2 +1,2 @@
1
- export * from "./usecase";
1
+ export * from "./usecase/member";
2
2
  export * from "./exceptions";
@@ -14,5 +14,5 @@ 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("./usecase"), exports);
17
+ __exportStar(require("./usecase/member"), exports);
18
18
  __exportStar(require("./exceptions"), exports);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ユースケースの基底抽象クラス
3
+ * TInputはユースケースへの入力型
4
+ * TOutputはユースケースからの出力型
5
+ */
6
+ export declare abstract class IUseCase<Input, Output> {
7
+ abstract execute(input: Input): Promise<Output>;
8
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IUseCase = void 0;
4
+ /**
5
+ * ユースケースの基底抽象クラス
6
+ * TInputはユースケースへの入力型
7
+ * TOutputはユースケースからの出力型
8
+ */
9
+ class IUseCase {
10
+ }
11
+ exports.IUseCase = IUseCase;
@@ -0,0 +1,23 @@
1
+ import type { EventRepository } from "../../../domain";
2
+ import type { Url } from "../../../domain";
3
+ import type { Event } from "../../../domain";
4
+ import { IUseCase } from "../base";
5
+ export interface AddExhibitToEventInput {
6
+ eventId: string;
7
+ exhibit: {
8
+ id: string;
9
+ name: string;
10
+ description?: string;
11
+ markdownContent?: string;
12
+ url?: Url;
13
+ };
14
+ }
15
+ export type AddExhibitToEventOutput = Event;
16
+ /**
17
+ * イベントに展示を追加するユースケース
18
+ */
19
+ export declare class AddExhibitToEvent extends IUseCase<AddExhibitToEventInput, AddExhibitToEventOutput> {
20
+ private readonly eventRepository;
21
+ constructor(eventRepository: EventRepository);
22
+ execute(input: AddExhibitToEventInput): Promise<AddExhibitToEventOutput>;
23
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddExhibitToEvent = void 0;
4
+ const domain_1 = require("../../../domain");
5
+ const exceptions_1 = require("../../exceptions");
6
+ const base_1 = require("../base");
7
+ /**
8
+ * イベントに展示を追加するユースケース
9
+ */
10
+ class AddExhibitToEvent extends base_1.IUseCase {
11
+ constructor(eventRepository) {
12
+ super();
13
+ this.eventRepository = eventRepository;
14
+ }
15
+ async execute(input) {
16
+ const event = await this.eventRepository.findById(input.eventId);
17
+ if (!event) {
18
+ throw new exceptions_1.EventNotFoundException();
19
+ }
20
+ const { id, name, description, markdownContent, url } = input.exhibit;
21
+ const exhibit = new domain_1.Exhibit(id, name, description, markdownContent, url);
22
+ event.addExhibit(exhibit);
23
+ await this.eventRepository.save(event);
24
+ return event;
25
+ }
26
+ }
27
+ exports.AddExhibitToEvent = AddExhibitToEvent;
@@ -0,0 +1,17 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import { IUseCase } from "../base";
4
+ export interface ChangeExhibitDescriptionInput {
5
+ eventId: string;
6
+ exhibitId: string;
7
+ newDescription: string;
8
+ }
9
+ export type ChangeExhibitDescriptionOutput = Event;
10
+ /**
11
+ * 展示説明変更ユースケース
12
+ */
13
+ export declare class ChangeExhibitDescription extends IUseCase<ChangeExhibitDescriptionInput, ChangeExhibitDescriptionOutput> {
14
+ private readonly eventRepository;
15
+ constructor(eventRepository: EventRepository);
16
+ execute(input: ChangeExhibitDescriptionInput): Promise<ChangeExhibitDescriptionOutput>;
17
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeExhibitDescription = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * 展示説明変更ユースケース
8
+ */
9
+ class ChangeExhibitDescription extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitDescription(input.exhibitId, input.newDescription);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeExhibitDescription = ChangeExhibitDescription;
@@ -0,0 +1,17 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import { IUseCase } from "../base";
4
+ export interface ChangeExhibitMarkdownContentInput {
5
+ eventId: string;
6
+ exhibitId: string;
7
+ newMarkdownContent: string;
8
+ }
9
+ export type ChangeExhibitMarkdownContentOutput = Event;
10
+ /**
11
+ * 展示Markdownコンテンツ変更ユースケース
12
+ */
13
+ export declare class ChangeExhibitMarkdownContent extends IUseCase<ChangeExhibitMarkdownContentInput, ChangeExhibitMarkdownContentOutput> {
14
+ private readonly eventRepository;
15
+ constructor(eventRepository: EventRepository);
16
+ execute(input: ChangeExhibitMarkdownContentInput): Promise<ChangeExhibitMarkdownContentOutput>;
17
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeExhibitMarkdownContent = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * 展示Markdownコンテンツ変更ユースケース
8
+ */
9
+ class ChangeExhibitMarkdownContent extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitMarkdownContent(input.exhibitId, input.newMarkdownContent);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeExhibitMarkdownContent = ChangeExhibitMarkdownContent;
@@ -0,0 +1,17 @@
1
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
2
+ import { IUseCase } from "../base";
3
+ export interface ChangeExhibitNameInput {
4
+ eventId: string;
5
+ exhibitId: string;
6
+ newName: string;
7
+ }
8
+ import type { Event } from "../../../domain/aggregates/event/Event";
9
+ export type ChangeExhibitNameOutput = Event;
10
+ /**
11
+ * 展示名変更ユースケース
12
+ */
13
+ export declare class ChangeExhibitName extends IUseCase<ChangeExhibitNameInput, ChangeExhibitNameOutput> {
14
+ private readonly eventRepository;
15
+ constructor(eventRepository: EventRepository);
16
+ execute(input: ChangeExhibitNameInput): Promise<ChangeExhibitNameOutput>;
17
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeExhibitName = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * 展示名変更ユースケース
8
+ */
9
+ class ChangeExhibitName extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitName(input.exhibitId, input.newName);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeExhibitName = ChangeExhibitName;
@@ -0,0 +1,18 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import type { Url } from "../../../domain/value-objects/Url";
4
+ import { IUseCase } from "../base";
5
+ export interface ChangeExhibitUrlInput {
6
+ eventId: string;
7
+ exhibitId: string;
8
+ newUrl: Url;
9
+ }
10
+ export type ChangeExhibitUrlOutput = Event;
11
+ /**
12
+ * 展示URL変更ユースケース
13
+ */
14
+ export declare class ChangeExhibitUrl extends IUseCase<ChangeExhibitUrlInput, ChangeExhibitUrlOutput> {
15
+ private readonly eventRepository;
16
+ constructor(eventRepository: EventRepository);
17
+ execute(input: ChangeExhibitUrlInput): Promise<ChangeExhibitUrlOutput>;
18
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeExhibitUrl = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * 展示URL変更ユースケース
8
+ */
9
+ class ChangeExhibitUrl extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitUrl(input.exhibitId, input.newUrl);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeExhibitUrl = ChangeExhibitUrl;
@@ -0,0 +1,18 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import type { LightningTalkDuration } from "../../../domain/value-objects/LightningTalkDuration";
4
+ import { IUseCase } from "../base";
5
+ export interface ChangeLightningTalkDurationInput {
6
+ eventId: string;
7
+ exhibitId: string;
8
+ newDuration: LightningTalkDuration;
9
+ }
10
+ export type ChangeLightningTalkDurationOutput = Event;
11
+ /**
12
+ * LT持ち時間変更ユースケース
13
+ */
14
+ export declare class ChangeLightningTalkDuration extends IUseCase<ChangeLightningTalkDurationInput, ChangeLightningTalkDurationOutput> {
15
+ private readonly eventRepository;
16
+ constructor(eventRepository: EventRepository);
17
+ execute(input: ChangeLightningTalkDurationInput): Promise<ChangeLightningTalkDurationOutput>;
18
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeLightningTalkDuration = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * LT持ち時間変更ユースケース
8
+ */
9
+ class ChangeLightningTalkDuration extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitLightningTalkDuration(input.exhibitId, input.newDuration);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeLightningTalkDuration = ChangeLightningTalkDuration;
@@ -0,0 +1,18 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import type { Url } from "../../../domain/value-objects/Url";
4
+ import { IUseCase } from "../base";
5
+ export interface ChangeLightningTalkSlideUrlInput {
6
+ eventId: string;
7
+ exhibitId: string;
8
+ newSlideUrl: Url;
9
+ }
10
+ export type ChangeLightningTalkSlideUrlOutput = Event;
11
+ /**
12
+ * LTスライドURL変更ユースケース
13
+ */
14
+ export declare class ChangeLightningTalkSlideUrl extends IUseCase<ChangeLightningTalkSlideUrlInput, ChangeLightningTalkSlideUrlOutput> {
15
+ private readonly eventRepository;
16
+ constructor(eventRepository: EventRepository);
17
+ execute(input: ChangeLightningTalkSlideUrlInput): Promise<ChangeLightningTalkSlideUrlOutput>;
18
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeLightningTalkSlideUrl = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * LTスライドURL変更ユースケース
8
+ */
9
+ class ChangeLightningTalkSlideUrl extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitLightningTalkSlideUrl(input.exhibitId, input.newSlideUrl);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeLightningTalkSlideUrl = ChangeLightningTalkSlideUrl;
@@ -0,0 +1,17 @@
1
+ import type { Event } from "../../../domain/aggregates/event/Event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import { IUseCase } from "../base";
4
+ export interface ChangeLightningTalkStartTimeInput {
5
+ eventId: string;
6
+ exhibitId: string;
7
+ newStartTime: Date;
8
+ }
9
+ export type ChangeLightningTalkStartTimeOutput = Event;
10
+ /**
11
+ * LT開始時刻変更ユースケース
12
+ */
13
+ export declare class ChangeLightningTalkStartTime extends IUseCase<ChangeLightningTalkStartTimeInput, ChangeLightningTalkStartTimeOutput> {
14
+ private readonly eventRepository;
15
+ constructor(eventRepository: EventRepository);
16
+ execute(input: ChangeLightningTalkStartTimeInput): Promise<ChangeLightningTalkStartTimeOutput>;
17
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChangeLightningTalkStartTime = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * LT開始時刻変更ユースケース
8
+ */
9
+ class ChangeLightningTalkStartTime extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.changeExhibitLightningTalkStartTime(input.exhibitId, input.newStartTime);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.ChangeLightningTalkStartTime = ChangeLightningTalkStartTime;
@@ -0,0 +1,19 @@
1
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
2
+ import { IUseCase } from "../base";
3
+ export interface CreateEventInput {
4
+ id: string;
5
+ name: string;
6
+ date: Date;
7
+ }
8
+ export interface CreateEventOutput {
9
+ success: boolean;
10
+ message?: string;
11
+ }
12
+ /**
13
+ * 新しいEventを作成し、DBに保存するユースケース。
14
+ */
15
+ export declare class CreateEvent extends IUseCase<CreateEventInput, CreateEventOutput> {
16
+ private readonly eventRepository;
17
+ constructor(eventRepository: EventRepository);
18
+ execute(input: CreateEventInput): Promise<CreateEventOutput>;
19
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateEvent = void 0;
4
+ const event_1 = require("../../../domain/aggregates/event");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * 新しいEventを作成し、DBに保存するユースケース。
8
+ */
9
+ class CreateEvent extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const { id, name, date } = input;
16
+ // event生成
17
+ const event = new event_1.Event(id, name, date);
18
+ // save
19
+ await this.eventRepository.save(event);
20
+ return {
21
+ success: true,
22
+ };
23
+ }
24
+ }
25
+ exports.CreateEvent = CreateEvent;
@@ -0,0 +1,14 @@
1
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
2
+ import { IUseCase } from "../base";
3
+ export interface DeleteEventInput {
4
+ eventId: string;
5
+ }
6
+ export type DeleteEventOutput = undefined;
7
+ /**
8
+ * イベント削除ユースケース
9
+ */
10
+ export declare class DeleteEvent extends IUseCase<DeleteEventInput, DeleteEventOutput> {
11
+ private readonly eventRepository;
12
+ constructor(eventRepository: EventRepository);
13
+ execute(input: DeleteEventInput): Promise<DeleteEventOutput>;
14
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeleteEvent = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * イベント削除ユースケース
8
+ */
9
+ class DeleteEvent extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ await this.eventRepository.delete(input.eventId);
20
+ }
21
+ }
22
+ exports.DeleteEvent = DeleteEvent;
@@ -0,0 +1,17 @@
1
+ import type { Event } from "../../../domain/aggregates/event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import { IUseCase } from "../base";
4
+ export interface GetEventInput {
5
+ eventId: string;
6
+ }
7
+ export interface GetEventOutput {
8
+ event: Event | null;
9
+ }
10
+ /**
11
+ * 指定したEvent IDに該当するEventを取得
12
+ */
13
+ export declare class GetEvent extends IUseCase<GetEventInput, GetEventOutput> {
14
+ private readonly eventRepository;
15
+ constructor(eventRepository: EventRepository);
16
+ execute(input: GetEventInput): Promise<GetEventOutput>;
17
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetEvent = void 0;
4
+ const base_1 = require("../base");
5
+ /**
6
+ * 指定したEvent IDに該当するEventを取得
7
+ */
8
+ class GetEvent extends base_1.IUseCase {
9
+ constructor(eventRepository) {
10
+ super();
11
+ this.eventRepository = eventRepository;
12
+ }
13
+ async execute(input) {
14
+ const event = await this.eventRepository.findById(input.eventId);
15
+ return { event };
16
+ }
17
+ }
18
+ exports.GetEvent = GetEvent;
@@ -0,0 +1,13 @@
1
+ import type { Event } from "../../../domain/aggregates/event";
2
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
3
+ import { IUseCase } from "../base";
4
+ export type GetEventListInput = Record<string, never>;
5
+ export type GetEventListOutput = Event[];
6
+ /**
7
+ * 全Eventを一覧取得するユースケース
8
+ */
9
+ export declare class GetEventList extends IUseCase<GetEventListInput, GetEventListOutput> {
10
+ private readonly eventRepository;
11
+ constructor(eventRepository: EventRepository);
12
+ execute(_input: GetEventListInput): Promise<GetEventListOutput>;
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetEventList = void 0;
4
+ const base_1 = require("../base");
5
+ /**
6
+ * 全Eventを一覧取得するユースケース
7
+ */
8
+ class GetEventList extends base_1.IUseCase {
9
+ constructor(eventRepository) {
10
+ super();
11
+ this.eventRepository = eventRepository;
12
+ }
13
+ async execute(_input) {
14
+ return await this.eventRepository.findAll();
15
+ }
16
+ }
17
+ exports.GetEventList = GetEventList;
@@ -0,0 +1,16 @@
1
+ import type { EventRepository } from "../../../domain/aggregates/event/EventRepository";
2
+ import { IUseCase } from "../base";
3
+ export interface RemoveExhibitFromEventInput {
4
+ eventId: string;
5
+ exhibitId: string;
6
+ }
7
+ import type { Event } from "../../../domain/aggregates/event/Event";
8
+ export type RemoveExhibitFromEventOutput = Event;
9
+ /**
10
+ * イベントから展示を削除するユースケース
11
+ */
12
+ export declare class RemoveExhibitFromEvent extends IUseCase<RemoveExhibitFromEventInput, RemoveExhibitFromEventOutput> {
13
+ private readonly eventRepository;
14
+ constructor(eventRepository: EventRepository);
15
+ execute(input: RemoveExhibitFromEventInput): Promise<RemoveExhibitFromEventOutput>;
16
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoveExhibitFromEvent = void 0;
4
+ const exceptions_1 = require("../../exceptions");
5
+ const base_1 = require("../base");
6
+ /**
7
+ * イベントから展示を削除するユースケース
8
+ */
9
+ class RemoveExhibitFromEvent extends base_1.IUseCase {
10
+ constructor(eventRepository) {
11
+ super();
12
+ this.eventRepository = eventRepository;
13
+ }
14
+ async execute(input) {
15
+ const event = await this.eventRepository.findById(input.eventId);
16
+ if (!event) {
17
+ throw new exceptions_1.EventNotFoundException();
18
+ }
19
+ event.removeExhibit(input.exhibitId);
20
+ await this.eventRepository.save(event);
21
+ return event;
22
+ }
23
+ }
24
+ exports.RemoveExhibitFromEvent = RemoveExhibitFromEvent;