@shizuoka-its/core 2.1.0 → 2.1.1

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 (143) hide show
  1. package/README.md +13 -19
  2. package/dist/index.cjs +1914 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +754 -0
  5. package/dist/index.d.ts +754 -2
  6. package/dist/index.js +1873 -16
  7. package/dist/index.js.map +1 -0
  8. package/package.json +25 -14
  9. package/dist/application/exceptions/ApplicationExceptions.d.ts +0 -24
  10. package/dist/application/exceptions/ApplicationExceptions.js +0 -66
  11. package/dist/application/exceptions/index.d.ts +0 -1
  12. package/dist/application/exceptions/index.js +0 -17
  13. package/dist/application/index.d.ts +0 -4
  14. package/dist/application/index.js +0 -20
  15. package/dist/application/usecase/base.d.ts +0 -8
  16. package/dist/application/usecase/base.js +0 -11
  17. package/dist/application/usecase/event/AddExhibitToEvent.d.ts +0 -23
  18. package/dist/application/usecase/event/AddExhibitToEvent.js +0 -27
  19. package/dist/application/usecase/event/ChangeExhibitDescription.d.ts +0 -18
  20. package/dist/application/usecase/event/ChangeExhibitDescription.js +0 -24
  21. package/dist/application/usecase/event/ChangeExhibitMarkdownContent.d.ts +0 -18
  22. package/dist/application/usecase/event/ChangeExhibitMarkdownContent.js +0 -24
  23. package/dist/application/usecase/event/ChangeExhibitName.d.ts +0 -18
  24. package/dist/application/usecase/event/ChangeExhibitName.js +0 -24
  25. package/dist/application/usecase/event/ChangeExhibitUrl.d.ts +0 -18
  26. package/dist/application/usecase/event/ChangeExhibitUrl.js +0 -24
  27. package/dist/application/usecase/event/ChangeLightningTalkDuration.d.ts +0 -18
  28. package/dist/application/usecase/event/ChangeLightningTalkDuration.js +0 -24
  29. package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.d.ts +0 -18
  30. package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.js +0 -24
  31. package/dist/application/usecase/event/ChangeLightningTalkStartTime.d.ts +0 -18
  32. package/dist/application/usecase/event/ChangeLightningTalkStartTime.js +0 -24
  33. package/dist/application/usecase/event/CreateEvent.d.ts +0 -18
  34. package/dist/application/usecase/event/CreateEvent.js +0 -23
  35. package/dist/application/usecase/event/DeleteEvent.d.ts +0 -16
  36. package/dist/application/usecase/event/DeleteEvent.js +0 -23
  37. package/dist/application/usecase/event/GetEvent.d.ts +0 -16
  38. package/dist/application/usecase/event/GetEvent.js +0 -18
  39. package/dist/application/usecase/event/GetEventList.d.ts +0 -11
  40. package/dist/application/usecase/event/GetEventList.js +0 -15
  41. package/dist/application/usecase/event/RemoveExhibitFromEvent.d.ts +0 -17
  42. package/dist/application/usecase/event/RemoveExhibitFromEvent.js +0 -24
  43. package/dist/application/usecase/event/UpdateEvent.d.ts +0 -15
  44. package/dist/application/usecase/event/UpdateEvent.js +0 -26
  45. package/dist/application/usecase/event/index.d.ts +0 -14
  46. package/dist/application/usecase/event/index.js +0 -30
  47. package/dist/application/usecase/eventParticipation/GetEventsByMember.d.ts +0 -13
  48. package/dist/application/usecase/eventParticipation/GetEventsByMember.js +0 -15
  49. package/dist/application/usecase/eventParticipation/GetExhibitsByMember.d.ts +0 -13
  50. package/dist/application/usecase/eventParticipation/GetExhibitsByMember.js +0 -23
  51. package/dist/application/usecase/eventParticipation/GetMembersByEvent.d.ts +0 -14
  52. package/dist/application/usecase/eventParticipation/GetMembersByEvent.js +0 -23
  53. package/dist/application/usecase/eventParticipation/GetMembersByExhibit.d.ts +0 -14
  54. package/dist/application/usecase/eventParticipation/GetMembersByExhibit.js +0 -24
  55. package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.d.ts +0 -15
  56. package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.js +0 -26
  57. package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.d.ts +0 -15
  58. package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.js +0 -26
  59. package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.d.ts +0 -15
  60. package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.js +0 -22
  61. package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.d.ts +0 -15
  62. package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.js +0 -22
  63. package/dist/application/usecase/eventParticipation/index.d.ts +0 -8
  64. package/dist/application/usecase/eventParticipation/index.js +0 -25
  65. package/dist/application/usecase/index.d.ts +0 -4
  66. package/dist/application/usecase/index.js +0 -20
  67. package/dist/application/usecase/member/ChangeDiscordNickName.d.ts +0 -14
  68. package/dist/application/usecase/member/ChangeDiscordNickName.js +0 -25
  69. package/dist/application/usecase/member/ConnectDiscordAccount.d.ts +0 -15
  70. package/dist/application/usecase/member/ConnectDiscordAccount.js +0 -24
  71. package/dist/application/usecase/member/GetMember.d.ts +0 -13
  72. package/dist/application/usecase/member/GetMember.js +0 -15
  73. package/dist/application/usecase/member/GetMemberByDiscordId.d.ts +0 -13
  74. package/dist/application/usecase/member/GetMemberByDiscordId.js +0 -15
  75. package/dist/application/usecase/member/GetMemberByEmail.d.ts +0 -13
  76. package/dist/application/usecase/member/GetMemberByEmail.js +0 -15
  77. package/dist/application/usecase/member/GetMemberList.d.ts +0 -11
  78. package/dist/application/usecase/member/GetMemberList.js +0 -15
  79. package/dist/application/usecase/member/RegisterMember.d.ts +0 -21
  80. package/dist/application/usecase/member/RegisterMember.js +0 -31
  81. package/dist/application/usecase/member/UpdateMember.d.ts +0 -20
  82. package/dist/application/usecase/member/UpdateMember.js +0 -40
  83. package/dist/application/usecase/member/index.d.ts +0 -8
  84. package/dist/application/usecase/member/index.js +0 -24
  85. package/dist/domain/aggregates/event/Event.d.ts +0 -49
  86. package/dist/domain/aggregates/event/Event.js +0 -103
  87. package/dist/domain/aggregates/event/EventRepository.d.ts +0 -9
  88. package/dist/domain/aggregates/event/EventRepository.js +0 -2
  89. package/dist/domain/aggregates/event/Exhibit.d.ts +0 -42
  90. package/dist/domain/aggregates/event/Exhibit.js +0 -87
  91. package/dist/domain/aggregates/event/LightningTalk.d.ts +0 -20
  92. package/dist/domain/aggregates/event/LightningTalk.js +0 -39
  93. package/dist/domain/aggregates/event/index.d.ts +0 -4
  94. package/dist/domain/aggregates/event/index.js +0 -20
  95. package/dist/domain/aggregates/index.d.ts +0 -2
  96. package/dist/domain/aggregates/index.js +0 -18
  97. package/dist/domain/aggregates/member/DiscordAccount.d.ts +0 -15
  98. package/dist/domain/aggregates/member/DiscordAccount.js +0 -28
  99. package/dist/domain/aggregates/member/Member.d.ts +0 -43
  100. package/dist/domain/aggregates/member/Member.js +0 -83
  101. package/dist/domain/aggregates/member/MemberRepository.d.ts +0 -9
  102. package/dist/domain/aggregates/member/MemberRepository.js +0 -2
  103. package/dist/domain/aggregates/member/index.d.ts +0 -3
  104. package/dist/domain/aggregates/member/index.js +0 -19
  105. package/dist/domain/exceptions/DomainExceptions.d.ts +0 -42
  106. package/dist/domain/exceptions/DomainExceptions.js +0 -101
  107. package/dist/domain/exceptions/index.d.ts +0 -1
  108. package/dist/domain/exceptions/index.js +0 -17
  109. package/dist/domain/index.d.ts +0 -3
  110. package/dist/domain/index.js +0 -19
  111. package/dist/domain/value-objects/Departments.d.ts +0 -7
  112. package/dist/domain/value-objects/Departments.js +0 -22
  113. package/dist/domain/value-objects/Email.d.ts +0 -4
  114. package/dist/domain/value-objects/Email.js +0 -12
  115. package/dist/domain/value-objects/LightningTalkDuration.d.ts +0 -4
  116. package/dist/domain/value-objects/LightningTalkDuration.js +0 -11
  117. package/dist/domain/value-objects/UniversityEmail.d.ts +0 -4
  118. package/dist/domain/value-objects/UniversityEmail.js +0 -13
  119. package/dist/domain/value-objects/Url.d.ts +0 -4
  120. package/dist/domain/value-objects/Url.js +0 -19
  121. package/dist/domain/value-objects/ValueObject.d.ts +0 -8
  122. package/dist/domain/value-objects/ValueObject.js +0 -24
  123. package/dist/domain/value-objects/index.d.ts +0 -6
  124. package/dist/domain/value-objects/index.js +0 -22
  125. package/dist/executable/event.d.ts +0 -30
  126. package/dist/executable/event.js +0 -60
  127. package/dist/executable/index.d.ts +0 -2
  128. package/dist/executable/index.js +0 -18
  129. package/dist/executable/member.d.ts +0 -12
  130. package/dist/executable/member.js +0 -18
  131. package/dist/infrastructure/index.d.ts +0 -1
  132. package/dist/infrastructure/index.js +0 -17
  133. package/dist/infrastructure/prisma/PrismaEventRepository.d.ts +0 -23
  134. package/dist/infrastructure/prisma/PrismaEventRepository.js +0 -239
  135. package/dist/infrastructure/prisma/PrismaMemberRepository.d.ts +0 -11
  136. package/dist/infrastructure/prisma/PrismaMemberRepository.js +0 -99
  137. package/dist/infrastructure/prisma/index.d.ts +0 -2
  138. package/dist/infrastructure/prisma/index.js +0 -18
  139. package/prisma/migrations/20241107053440_init/migration.sql +0 -97
  140. package/prisma/migrations/20241107095139_/migration.sql +0 -14
  141. package/prisma/migrations/20241108213534_add_markdown_content_exhibit/migration.sql +0 -2
  142. package/prisma/migrations/migration_lock.toml +0 -3
  143. package/prisma/schema.prisma +0 -109
@@ -1,239 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PrismaEventRepository = void 0;
4
- const client_1 = require("@prisma/client");
5
- const domain_1 = require("../../domain");
6
- const prisma = new client_1.PrismaClient();
7
- class PrismaEventRepository {
8
- /**
9
- * Prisma の Record から ドメインの Event を構築
10
- * Exhibit.createWithLightningTalk() を使用して lightningTalk を持つ Exhibit を生成
11
- */
12
- toDomain(record) {
13
- var _a, _b, _c, _d;
14
- const event = new domain_1.Event(record.id, record.name, record.date);
15
- // exhibits をドメインに変換して追加
16
- for (const exhibitRecord of record.exhibits) {
17
- let exhibit;
18
- if (exhibitRecord.lightningTalk) {
19
- const ltRecord = exhibitRecord.lightningTalk;
20
- const lightningTalk = new domain_1.LightningTalk(ltRecord.exhibitId, ltRecord.startTime, new domain_1.LightningTalkDuration(ltRecord.duration), ltRecord.slideUrl ? new domain_1.Url(ltRecord.slideUrl) : undefined);
21
- exhibit = domain_1.Exhibit.createWithLightningTalk(exhibitRecord.id, exhibitRecord.name, lightningTalk, (_a = exhibitRecord.description) !== null && _a !== void 0 ? _a : undefined, (_b = exhibitRecord.markdownContent) !== null && _b !== void 0 ? _b : undefined, exhibitRecord.url ? new domain_1.Url(exhibitRecord.url) : undefined);
22
- }
23
- else {
24
- exhibit = new domain_1.Exhibit(exhibitRecord.id, exhibitRecord.name, (_c = exhibitRecord.description) !== null && _c !== void 0 ? _c : undefined, (_d = exhibitRecord.markdownContent) !== null && _d !== void 0 ? _d : undefined, exhibitRecord.url ? new domain_1.Url(exhibitRecord.url) : undefined);
25
- }
26
- event.addExhibit(exhibit);
27
- }
28
- return event;
29
- }
30
- /**
31
- * DBへEventを保存するためのヘルパー
32
- * Event, Exhibit, LightningTalk の upsert処理を行う
33
- */
34
- async persistEvent(event) {
35
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
36
- const snapshot = event.toSnapshot();
37
- // 1) まず event を upsert
38
- await prisma.event.upsert({
39
- where: { id: snapshot.id },
40
- update: {
41
- name: snapshot.name,
42
- date: snapshot.date,
43
- },
44
- create: {
45
- id: snapshot.id,
46
- name: snapshot.name,
47
- date: snapshot.date,
48
- },
49
- });
50
- // 2) 既存 exhibits を削除(スナップショットに含まれないもののみ)
51
- const snapshotExhibitIds = snapshot.exhibits.map((ex) => ex.id);
52
- // lightningTalk を先に削除
53
- await prisma.lightningTalk.deleteMany({
54
- where: {
55
- exhibitId: {
56
- in: await this.findObsoleteExhibitIds(snapshot.id, snapshotExhibitIds),
57
- },
58
- },
59
- });
60
- // MemberExhibit(展示参加者)も先に削除
61
- await prisma.memberExhibit.deleteMany({
62
- where: {
63
- exhibitId: {
64
- in: await this.findObsoleteExhibitIds(snapshot.id, snapshotExhibitIds),
65
- },
66
- },
67
- });
68
- // exhibit 削除
69
- await prisma.exhibit.deleteMany({
70
- where: {
71
- eventId: snapshot.id,
72
- id: { notIn: snapshotExhibitIds },
73
- },
74
- });
75
- // 3) exhibits を upsert
76
- for (const ex of snapshot.exhibits) {
77
- await prisma.exhibit.upsert({
78
- where: { id: ex.id },
79
- create: {
80
- id: ex.id,
81
- name: ex.name,
82
- description: (_a = ex.description) !== null && _a !== void 0 ? _a : null,
83
- markdownContent: (_b = ex.markdownContent) !== null && _b !== void 0 ? _b : null,
84
- url: (_d = (_c = ex.url) === null || _c === void 0 ? void 0 : _c.getValue()) !== null && _d !== void 0 ? _d : null,
85
- eventId: snapshot.id,
86
- },
87
- update: {
88
- name: ex.name,
89
- description: (_e = ex.description) !== null && _e !== void 0 ? _e : null,
90
- markdownContent: (_f = ex.markdownContent) !== null && _f !== void 0 ? _f : null,
91
- url: (_h = (_g = ex.url) === null || _g === void 0 ? void 0 : _g.getValue()) !== null && _h !== void 0 ? _h : null,
92
- },
93
- });
94
- // LightningTalk
95
- if (ex.lightningTalk) {
96
- await prisma.lightningTalk.upsert({
97
- where: { exhibitId: ex.id },
98
- create: {
99
- exhibitId: ex.id,
100
- startTime: ex.lightningTalk.startTime,
101
- duration: ex.lightningTalk.durationMinutes.getValue(),
102
- slideUrl: (_k = (_j = ex.lightningTalk.slideUrl) === null || _j === void 0 ? void 0 : _j.getValue()) !== null && _k !== void 0 ? _k : null,
103
- },
104
- update: {
105
- startTime: ex.lightningTalk.startTime,
106
- duration: ex.lightningTalk.durationMinutes.getValue(),
107
- slideUrl: (_m = (_l = ex.lightningTalk.slideUrl) === null || _l === void 0 ? void 0 : _l.getValue()) !== null && _m !== void 0 ? _m : null,
108
- },
109
- });
110
- }
111
- else {
112
- // 存在していたら削除
113
- await prisma.lightningTalk.deleteMany({
114
- where: { exhibitId: ex.id },
115
- });
116
- }
117
- }
118
- // 4) MemberEvent(イベント参加者)を同期
119
- const eventMemberIds = event.getMemberIds();
120
- // 古い参加者を削除
121
- await prisma.memberEvent.deleteMany({
122
- where: {
123
- eventId: snapshot.id,
124
- memberId: { notIn: eventMemberIds },
125
- },
126
- });
127
- // 新しい参加者を登録(重複スキップ)
128
- await prisma.memberEvent.createMany({
129
- data: eventMemberIds.map((memberId) => ({
130
- memberId,
131
- eventId: snapshot.id,
132
- })),
133
- skipDuplicates: true,
134
- });
135
- // 5) MemberExhibit(展示参加者)を同期
136
- for (const exhibitDomain of event.getExhibits()) {
137
- const exhibitMemberIds = exhibitDomain.getMemberIds();
138
- // 古い展示参加者を削除
139
- await prisma.memberExhibit.deleteMany({
140
- where: {
141
- exhibitId: exhibitDomain.id,
142
- memberId: { notIn: exhibitMemberIds },
143
- },
144
- });
145
- // 新しい展示参加者を登録(重複スキップ)
146
- await prisma.memberExhibit.createMany({
147
- data: exhibitMemberIds.map((memberId) => ({
148
- memberId,
149
- exhibitId: exhibitDomain.id,
150
- })),
151
- skipDuplicates: true,
152
- });
153
- }
154
- }
155
- /**
156
- * どの ExhibitID が消えたかを調べるヘルパー
157
- */
158
- async findObsoleteExhibitIds(eventId, keptExhibitIds) {
159
- // イベントに紐づく既存のExhibitIDを全て取得
160
- const existingIds = await prisma.exhibit.findMany({
161
- where: { eventId },
162
- select: { id: true },
163
- });
164
- const existingIdSet = new Set(existingIds.map((r) => r.id));
165
- // スナップショットに無いIDだけ抽出
166
- const keptIdSet = new Set(keptExhibitIds);
167
- return [...existingIdSet].filter((id) => !keptIdSet.has(id));
168
- }
169
- // =============== EventRepository 実装 ===============
170
- async findById(id) {
171
- const record = await prisma.event.findUnique({
172
- where: { id },
173
- include: {
174
- exhibits: {
175
- include: { lightningTalk: true },
176
- },
177
- },
178
- });
179
- if (!record)
180
- return null;
181
- return this.toDomain(record);
182
- }
183
- async findByParticipantMemberId(memberId) {
184
- const records = await prisma.event.findMany({
185
- where: {
186
- members: { some: { memberId: memberId } },
187
- },
188
- include: {
189
- exhibits: { include: { lightningTalk: true } },
190
- },
191
- });
192
- return records.map((r) => this.toDomain(r));
193
- }
194
- async findByExhibitId(exhibitId) {
195
- const record = await prisma.event.findFirst({
196
- where: {
197
- exhibits: { some: { id: exhibitId } },
198
- },
199
- include: {
200
- exhibits: { include: { lightningTalk: true } },
201
- },
202
- });
203
- if (!record)
204
- return null;
205
- return this.toDomain(record);
206
- }
207
- async findAll() {
208
- const records = await prisma.event.findMany({
209
- include: {
210
- exhibits: {
211
- include: { lightningTalk: true },
212
- },
213
- },
214
- });
215
- return records.map((r) => this.toDomain(r));
216
- }
217
- async save(event) {
218
- await this.persistEvent(event);
219
- }
220
- async delete(eventId) {
221
- // 先に lightningTalk を削除
222
- const exhibitIds = await prisma.exhibit.findMany({
223
- where: { eventId },
224
- select: { id: true },
225
- });
226
- await prisma.lightningTalk.deleteMany({
227
- where: {
228
- exhibitId: { in: exhibitIds.map((ex) => ex.id) },
229
- },
230
- });
231
- // exhibit 削除
232
- await prisma.exhibit.deleteMany({ where: { eventId } });
233
- // event 削除
234
- await prisma.event.delete({
235
- where: { id: eventId },
236
- });
237
- }
238
- }
239
- exports.PrismaEventRepository = PrismaEventRepository;
@@ -1,11 +0,0 @@
1
- import { Member, type MemberRepository } from "../../domain";
2
- export declare class PrismaMemberRepository implements MemberRepository {
3
- private toDomain;
4
- findByDiscordAccountId(discordAccountId: string): Promise<Member | null>;
5
- findById(id: string): Promise<Member | null>;
6
- findByEmail(email: string): Promise<Member | null>;
7
- findByStudentId(studentId: string): Promise<Member | null>;
8
- findAll(): Promise<Member[]>;
9
- save(member: Member): Promise<void>;
10
- delete(memberId: string): Promise<void>;
11
- }
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PrismaMemberRepository = void 0;
4
- const client_1 = require("@prisma/client");
5
- const domain_1 = require("../../domain");
6
- const prisma = new client_1.PrismaClient();
7
- class PrismaMemberRepository {
8
- toDomain(record) {
9
- const member = new domain_1.Member(record.id, record.name, record.studentId, domain_1.Department.fromString(record.department), new domain_1.UniversityEmail(record.email), record.personalEmail ? new domain_1.Email(record.personalEmail) : undefined);
10
- for (const discordAccount of record.discordAccounts) {
11
- member.addDiscordAccount(new domain_1.DiscordAccount(discordAccount.id, discordAccount.nickName, discordAccount.memberId));
12
- }
13
- return member;
14
- }
15
- async findByDiscordAccountId(discordAccountId) {
16
- const record = await prisma.member.findFirst({
17
- where: { discordAccounts: { some: { id: discordAccountId } } },
18
- include: { discordAccounts: true },
19
- });
20
- if (!record)
21
- return null;
22
- return this.toDomain(record);
23
- }
24
- async findById(id) {
25
- const record = await prisma.member.findUnique({
26
- where: { id },
27
- include: { discordAccounts: true },
28
- });
29
- if (!record)
30
- return null;
31
- return this.toDomain(record);
32
- }
33
- async findByEmail(email) {
34
- const record = await prisma.member.findUnique({
35
- where: { email },
36
- include: { discordAccounts: true },
37
- });
38
- if (!record)
39
- return null;
40
- return this.toDomain(record);
41
- }
42
- async findByStudentId(studentId) {
43
- const record = await prisma.member.findFirst({
44
- where: { studentId },
45
- include: { discordAccounts: true },
46
- });
47
- if (!record)
48
- return null;
49
- return this.toDomain(record);
50
- }
51
- async findAll() {
52
- const records = await prisma.member.findMany({
53
- include: { discordAccounts: true },
54
- });
55
- return records.map(this.toDomain);
56
- }
57
- async save(member) {
58
- var _a, _b;
59
- const memberSnapshot = member.toSnapshot();
60
- await prisma.member.upsert({
61
- where: { id: memberSnapshot.id },
62
- update: {
63
- name: memberSnapshot.name,
64
- studentId: memberSnapshot.studentId,
65
- department: memberSnapshot.department.getValue(),
66
- email: memberSnapshot.email.getValue(),
67
- personalEmail: (_a = memberSnapshot.personalEmail) === null || _a === void 0 ? void 0 : _a.getValue(),
68
- },
69
- create: {
70
- id: memberSnapshot.id,
71
- name: memberSnapshot.name,
72
- studentId: memberSnapshot.studentId,
73
- department: memberSnapshot.department.getValue(),
74
- email: memberSnapshot.email.getValue(),
75
- personalEmail: (_b = memberSnapshot.personalEmail) === null || _b === void 0 ? void 0 : _b.getValue(),
76
- },
77
- });
78
- for (const discordAccount of memberSnapshot.discordAccounts) {
79
- await prisma.discordAccount.upsert({
80
- where: { id: discordAccount.id },
81
- update: { nickName: discordAccount.nickName },
82
- create: {
83
- id: discordAccount.id,
84
- nickName: discordAccount.nickName,
85
- memberId: discordAccount.memberId,
86
- },
87
- });
88
- }
89
- }
90
- async delete(memberId) {
91
- await prisma.discordAccount.deleteMany({
92
- where: { memberId },
93
- });
94
- await prisma.member.delete({
95
- where: { id: memberId },
96
- });
97
- }
98
- }
99
- exports.PrismaMemberRepository = PrismaMemberRepository;
@@ -1,2 +0,0 @@
1
- export * from "./PrismaEventRepository";
2
- export * from "./PrismaMemberRepository";
@@ -1,18 +0,0 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./PrismaEventRepository"), exports);
18
- __exportStar(require("./PrismaMemberRepository"), exports);
@@ -1,97 +0,0 @@
1
- -- CreateTable
2
- CREATE TABLE "members" (
3
- "id" TEXT NOT NULL,
4
- "name" TEXT NOT NULL,
5
- "student_id" TEXT NOT NULL,
6
- "department" TEXT NOT NULL,
7
- "email" TEXT NOT NULL,
8
- "personal_email" TEXT,
9
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
- "updatedAt" TIMESTAMP(3) NOT NULL,
11
-
12
- CONSTRAINT "members_pkey" PRIMARY KEY ("id")
13
- );
14
-
15
- -- CreateTable
16
- CREATE TABLE "discord_accounts" (
17
- "discord_id" TEXT NOT NULL,
18
- "nick_name" TEXT NOT NULL,
19
- "member_id" TEXT NOT NULL,
20
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
- "updatedAt" TIMESTAMP(3) NOT NULL,
22
-
23
- CONSTRAINT "discord_accounts_pkey" PRIMARY KEY ("discord_id")
24
- );
25
-
26
- -- CreateTable
27
- CREATE TABLE "events" (
28
- "id" TEXT NOT NULL,
29
- "name" TEXT NOT NULL,
30
- "date" TIMESTAMP(3) NOT NULL,
31
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
32
- "updatedAt" TIMESTAMP(3) NOT NULL,
33
-
34
- CONSTRAINT "events_pkey" PRIMARY KEY ("id")
35
- );
36
-
37
- -- CreateTable
38
- CREATE TABLE "exhibits" (
39
- "id" TEXT NOT NULL,
40
- "name" TEXT NOT NULL,
41
- "description" TEXT,
42
- "url" TEXT,
43
- "event_id" TEXT NOT NULL,
44
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
45
- "updatedAt" TIMESTAMP(3) NOT NULL,
46
-
47
- CONSTRAINT "exhibits_pkey" PRIMARY KEY ("id")
48
- );
49
-
50
- -- CreateTable
51
- CREATE TABLE "member_events" (
52
- "id" TEXT NOT NULL,
53
- "member_id" TEXT NOT NULL,
54
- "event_id" TEXT NOT NULL,
55
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
56
- "updatedAt" TIMESTAMP(3) NOT NULL,
57
-
58
- CONSTRAINT "member_events_pkey" PRIMARY KEY ("id")
59
- );
60
-
61
- -- CreateTable
62
- CREATE TABLE "member_exhibits" (
63
- "id" TEXT NOT NULL,
64
- "member_id" TEXT NOT NULL,
65
- "exhibit_id" TEXT NOT NULL,
66
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
67
- "updatedAt" TIMESTAMP(3) NOT NULL,
68
-
69
- CONSTRAINT "member_exhibits_pkey" PRIMARY KEY ("id")
70
- );
71
-
72
- -- CreateIndex
73
- CREATE UNIQUE INDEX "members_email_key" ON "members"("email");
74
-
75
- -- CreateIndex
76
- CREATE UNIQUE INDEX "member_events_member_id_event_id_key" ON "member_events"("member_id", "event_id");
77
-
78
- -- CreateIndex
79
- CREATE UNIQUE INDEX "member_exhibits_member_id_exhibit_id_key" ON "member_exhibits"("member_id", "exhibit_id");
80
-
81
- -- AddForeignKey
82
- ALTER TABLE "discord_accounts" ADD CONSTRAINT "discord_accounts_member_id_fkey" FOREIGN KEY ("member_id") REFERENCES "members"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
83
-
84
- -- AddForeignKey
85
- ALTER TABLE "exhibits" ADD CONSTRAINT "exhibits_event_id_fkey" FOREIGN KEY ("event_id") REFERENCES "events"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
86
-
87
- -- AddForeignKey
88
- ALTER TABLE "member_events" ADD CONSTRAINT "member_events_member_id_fkey" FOREIGN KEY ("member_id") REFERENCES "members"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
89
-
90
- -- AddForeignKey
91
- ALTER TABLE "member_events" ADD CONSTRAINT "member_events_event_id_fkey" FOREIGN KEY ("event_id") REFERENCES "events"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
92
-
93
- -- AddForeignKey
94
- ALTER TABLE "member_exhibits" ADD CONSTRAINT "member_exhibits_member_id_fkey" FOREIGN KEY ("member_id") REFERENCES "members"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
95
-
96
- -- AddForeignKey
97
- ALTER TABLE "member_exhibits" ADD CONSTRAINT "member_exhibits_exhibit_id_fkey" FOREIGN KEY ("exhibit_id") REFERENCES "exhibits"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -1,14 +0,0 @@
1
- -- CreateTable
2
- CREATE TABLE "lightning_talks" (
3
- "exhibit_id" TEXT NOT NULL,
4
- "start_time" TIMESTAMP(3) NOT NULL,
5
- "duration" INTEGER NOT NULL,
6
- "slide_url" TEXT,
7
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
8
- "updatedAt" TIMESTAMP(3) NOT NULL,
9
-
10
- CONSTRAINT "lightning_talks_pkey" PRIMARY KEY ("exhibit_id")
11
- );
12
-
13
- -- AddForeignKey
14
- ALTER TABLE "lightning_talks" ADD CONSTRAINT "lightning_talks_exhibit_id_fkey" FOREIGN KEY ("exhibit_id") REFERENCES "exhibits"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -1,2 +0,0 @@
1
- -- AlterTable
2
- ALTER TABLE "exhibits" ADD COLUMN "markdown_content" TEXT;
@@ -1,3 +0,0 @@
1
- # Please do not edit this file manually
2
- # It should be added in your version-control system (i.e. Git)
3
- provider = "postgresql"
@@ -1,109 +0,0 @@
1
- datasource db {
2
- provider = "postgresql"
3
- url = env("DATABASE_URL")
4
- }
5
-
6
- generator client {
7
- provider = "prisma-client-js"
8
- }
9
-
10
- model Member {
11
- id String @id @default(uuid())
12
- name String
13
- studentId String @map("student_id")
14
- department String
15
- email String @unique
16
- personalEmail String? @map("personal_email")
17
- // リレーション
18
- discordAccounts DiscordAccount[]
19
- events MemberEvent[]
20
- exhibits MemberExhibit[]
21
- createdAt DateTime @default(now())
22
- updatedAt DateTime @updatedAt
23
-
24
- @@map("members")
25
- }
26
-
27
- model DiscordAccount {
28
- id String @id @map("discord_id") // DiscordIDをプライマリーキーとして使用
29
- nickName String @map("nick_name")
30
- memberId String @map("member_id")
31
- member Member @relation(fields: [memberId], references: [id])
32
- createdAt DateTime @default(now())
33
- updatedAt DateTime @updatedAt
34
-
35
- @@map("discord_accounts")
36
- }
37
-
38
- model Event {
39
- id String @id @default(uuid())
40
- name String
41
- date DateTime
42
- // リレーション
43
- members MemberEvent[]
44
- exhibits Exhibit[]
45
- createdAt DateTime @default(now())
46
- updatedAt DateTime @updatedAt
47
-
48
- @@map("events")
49
- }
50
-
51
- model Exhibit {
52
- id String @id @default(uuid())
53
- name String
54
- description String?
55
- markdownContent String? @map("markdown_content")
56
- url String?
57
- // リレーション
58
- eventId String @map("event_id")
59
- event Event @relation(fields: [eventId], references: [id])
60
- members MemberExhibit[]
61
-
62
- // 必要だがアクセスしない関係として定義
63
- lightningTalk LightningTalk?
64
- createdAt DateTime @default(now())
65
- updatedAt DateTime @updatedAt
66
-
67
- @@map("exhibits")
68
- }
69
-
70
- // イベント中のLT
71
- model LightningTalk {
72
- exhibitId String @id @map("exhibit_id") // PKかつFKとして使用
73
- exhibit Exhibit @relation(fields: [exhibitId], references: [id])
74
- startTime DateTime @map("start_time")
75
- duration Int // 分単位
76
- slideUrl String? @map("slide_url")
77
- createdAt DateTime @default(now())
78
- updatedAt DateTime @updatedAt
79
-
80
- @@map("lightning_talks")
81
- }
82
-
83
- // ジャンクションテーブル(Member - Event)
84
- model MemberEvent {
85
- id String @id @default(uuid())
86
- memberId String @map("member_id")
87
- eventId String @map("event_id")
88
- member Member @relation(fields: [memberId], references: [id])
89
- event Event @relation(fields: [eventId], references: [id])
90
- createdAt DateTime @default(now())
91
- updatedAt DateTime @updatedAt
92
-
93
- @@unique([memberId, eventId])
94
- @@map("member_events")
95
- }
96
-
97
- // ジャンクションテーブル(Member - Exhibit)
98
- model MemberExhibit {
99
- id String @id @default(uuid())
100
- memberId String @map("member_id")
101
- exhibitId String @map("exhibit_id")
102
- member Member @relation(fields: [memberId], references: [id])
103
- exhibit Exhibit @relation(fields: [exhibitId], references: [id])
104
- createdAt DateTime @default(now())
105
- updatedAt DateTime @updatedAt
106
-
107
- @@unique([memberId, exhibitId])
108
- @@map("member_exhibits")
109
- }