@shizuoka-its/core 0.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 (67) hide show
  1. package/README.md +120 -0
  2. package/dist/index.d.ts +37 -0
  3. package/dist/index.js +46 -0
  4. package/dist/repositories/base.repository.d.ts +12 -0
  5. package/dist/repositories/base.repository.js +10 -0
  6. package/dist/repositories/discordAccount.repository.d.ts +12 -0
  7. package/dist/repositories/discordAccount.repository.js +51 -0
  8. package/dist/repositories/event.repository.d.ts +14 -0
  9. package/dist/repositories/event.repository.js +67 -0
  10. package/dist/repositories/exhibit.repository.d.ts +13 -0
  11. package/dist/repositories/exhibit.repository.js +51 -0
  12. package/dist/repositories/factory.d.ts +16 -0
  13. package/dist/repositories/factory.js +20 -0
  14. package/dist/repositories/index.d.ts +1 -0
  15. package/dist/repositories/index.js +17 -0
  16. package/dist/repositories/interfaces/base.repository.interface.d.ts +7 -0
  17. package/dist/repositories/interfaces/base.repository.interface.js +2 -0
  18. package/dist/repositories/interfaces/discordAccount.repository.interface.d.ts +5 -0
  19. package/dist/repositories/interfaces/discordAccount.repository.interface.js +2 -0
  20. package/dist/repositories/interfaces/event.repository.interface.d.ts +7 -0
  21. package/dist/repositories/interfaces/event.repository.interface.js +2 -0
  22. package/dist/repositories/interfaces/exhibit.repository.interface.d.ts +6 -0
  23. package/dist/repositories/interfaces/exhibit.repository.interface.js +2 -0
  24. package/dist/repositories/interfaces/index.d.ts +7 -0
  25. package/dist/repositories/interfaces/index.js +23 -0
  26. package/dist/repositories/interfaces/member.repository.interface.d.ts +6 -0
  27. package/dist/repositories/interfaces/member.repository.interface.js +2 -0
  28. package/dist/repositories/interfaces/memberEvent.repository.interface.d.ts +6 -0
  29. package/dist/repositories/interfaces/memberEvent.repository.interface.js +2 -0
  30. package/dist/repositories/interfaces/memberExhibit.repository.interface.d.ts +6 -0
  31. package/dist/repositories/interfaces/memberExhibit.repository.interface.js +2 -0
  32. package/dist/repositories/member.repository.d.ts +13 -0
  33. package/dist/repositories/member.repository.js +44 -0
  34. package/dist/repositories/memberEvent.repository.d.ts +13 -0
  35. package/dist/repositories/memberEvent.repository.js +62 -0
  36. package/dist/repositories/memberExhibit.repository.d.ts +13 -0
  37. package/dist/repositories/memberExhibit.repository.js +62 -0
  38. package/dist/services/base.service.d.ts +17 -0
  39. package/dist/services/base.service.js +18 -0
  40. package/dist/services/discordAccount.service.d.ts +12 -0
  41. package/dist/services/discordAccount.service.js +54 -0
  42. package/dist/services/event.service.d.ts +18 -0
  43. package/dist/services/event.service.js +90 -0
  44. package/dist/services/exhibit.service.d.ts +19 -0
  45. package/dist/services/exhibit.service.js +117 -0
  46. package/dist/services/factory.d.ts +12 -0
  47. package/dist/services/factory.js +16 -0
  48. package/dist/services/index.d.ts +7 -0
  49. package/dist/services/index.js +23 -0
  50. package/dist/services/interfaces/base.service.interface.d.ts +7 -0
  51. package/dist/services/interfaces/base.service.interface.js +2 -0
  52. package/dist/services/interfaces/discordAccount.service.interface.d.ts +14 -0
  53. package/dist/services/interfaces/discordAccount.service.interface.js +2 -0
  54. package/dist/services/interfaces/event.service.interface.d.ts +15 -0
  55. package/dist/services/interfaces/event.service.interface.js +2 -0
  56. package/dist/services/interfaces/exhibit.service.interface.d.ts +16 -0
  57. package/dist/services/interfaces/exhibit.service.interface.js +2 -0
  58. package/dist/services/interfaces/index.d.ts +5 -0
  59. package/dist/services/interfaces/index.js +21 -0
  60. package/dist/services/interfaces/member.service.interface.d.ts +16 -0
  61. package/dist/services/interfaces/member.service.interface.js +2 -0
  62. package/dist/services/interfaces/types.d.ts +1 -0
  63. package/dist/services/interfaces/types.js +2 -0
  64. package/dist/services/member.service.d.ts +14 -0
  65. package/dist/services/member.service.js +52 -0
  66. package/package.json +40 -0
  67. package/prisma/schema.prisma +92 -0
package/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # @su-its/core
2
+
3
+ ITSで使用する共通のデータベースアクセス層とビジネスロジックを提供するライブラリです。
4
+
5
+ ## インストール
6
+
7
+ ```bash
8
+ npm install @shizuoka-its/core
9
+ ```
10
+
11
+ ## 使い方
12
+ ```typescript
13
+ import { createClient } from '@su-its/core'
14
+
15
+ async function example() {
16
+ // クライアントの作成(オプションあり)
17
+ const client = createClient({
18
+ prismaOptions: {
19
+ log: ['query', 'error']
20
+ }
21
+ })
22
+
23
+ try {
24
+ const { services } = client
25
+
26
+ // メンバーの作成
27
+ const member = await services.member.create({
28
+ name: "山田太郎",
29
+ studentId: "20240001",
30
+ departments: ["情報工学科"],
31
+ email: "yamada@example.com"
32
+ })
33
+
34
+ // Discordアカウントの紐付け
35
+ await services.discordAccount.create({
36
+ id: "discord_user_id", // Discord IDをそのまま使用
37
+ nickName: "Yamada Taro",
38
+ memberId: member.id
39
+ })
40
+
41
+ // イベントの作成
42
+ const event = await services.event.create({
43
+ name: "プログラミング勉強会",
44
+ date: new Date("2024-12-01")
45
+ })
46
+
47
+ // イベントへの参加登録
48
+ await services.event.registerMember(event.id, member.id)
49
+ } finally {
50
+ // 必ずクリーンアップ
51
+ await client.disconnect()
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## 機能
57
+
58
+ ### メンバー管理
59
+ - メンバーの作成、更新、削除
60
+ - メールアドレスによる検索
61
+ - 学籍番号による検索
62
+
63
+ ### Discordアカウント管理
64
+ - Discordアカウントの紐付け
65
+ - メンバーごとのDiscordアカウント取得
66
+
67
+ ### イベント管理
68
+ - イベントの作成、更新、削除
69
+ - イベント参加者の管理
70
+ - 今後のイベント一覧取得
71
+
72
+ ### 展示管理
73
+ - 展示の作成、更新、削除
74
+ - イベントごとの展示一覧
75
+ - 展示参加者の管理
76
+
77
+ ## プロジェクト構成
78
+
79
+ ```
80
+ src/
81
+ ├── repositories/ # データベースアクセス層
82
+ │ ├── interfaces/ # リポジトリインターフェース
83
+ │ └── ...
84
+ ├── services/ # ビジネスロジック層
85
+ │ ├── interfaces/ # サービスインターフェース
86
+ │ └── ...
87
+ └── index.ts # エントリーポイント
88
+ ```
89
+
90
+ ## 開発セットアップ
91
+
92
+ 1. リポジトリのクローン
93
+ ```bash
94
+ git clone https://github.com/su-its/core.git
95
+ cd core
96
+ ```
97
+
98
+ 2. 依存関係のインストール
99
+ ```bash
100
+ npm install
101
+ ```
102
+
103
+ 3. 環境変数の設定
104
+ ```bash
105
+ cp .env.example .env
106
+ ```
107
+ `.env`ファイルを編集してデータベース接続情報を設定
108
+
109
+ 4. データベースのマイグレーション
110
+ ```bash
111
+ npx prisma migrate dev
112
+ ```
113
+
114
+ ## データベースマイグレーション
115
+
116
+ 詳細は[マイグレーションガイド](./docs/migration.md)を参照してください。
117
+
118
+ ## コントリビューター
119
+
120
+ - @KinjiKawaguchi
@@ -0,0 +1,37 @@
1
+ import { type Prisma, PrismaClient } from "@prisma/client";
2
+ export * from "./repositories";
3
+ export * from "./services";
4
+ type ClientOptions = {
5
+ prismaOptions?: Prisma.PrismaClientOptions;
6
+ };
7
+ export type { IMemberService, IEventService, IExhibitService, IDiscordAccountService, } from "./services/interfaces";
8
+ export type { MemberCreateDTO, MemberUpdateDTO, EventCreateDTO, EventUpdateDTO, ExhibitCreateDTO, ExhibitUpdateDTO, DiscordAccountCreateDTO, DiscordAccountUpdateDTO, } from "./services/interfaces";
9
+ export declare const createClient: ({ prismaOptions }?: ClientOptions) => {
10
+ prisma: PrismaClient<{
11
+ datasources?: Prisma.Datasources | undefined;
12
+ datasourceUrl?: string | undefined;
13
+ errorFormat?: Prisma.ErrorFormat | undefined;
14
+ log?: (Prisma.LogLevel | Prisma.LogDefinition)[] | undefined;
15
+ transactionOptions?: {
16
+ maxWait?: number;
17
+ timeout?: number;
18
+ isolationLevel?: Prisma.TransactionIsolationLevel;
19
+ } | undefined;
20
+ }, never, import("@prisma/client/runtime/library").DefaultArgs>;
21
+ repositories: {
22
+ member: import("./repositories/member.repository").MemberRepository;
23
+ discordAccount: import("./repositories/discordAccount.repository").DiscordAccountRepository;
24
+ event: import("./repositories/event.repository").EventRepository;
25
+ exhibit: import("./repositories/exhibit.repository").ExhibitRepository;
26
+ memberEvent: import("./repositories/memberEvent.repository").MemberEventRepository;
27
+ memberExhibit: import("./repositories/memberExhibit.repository").MemberExhibitRepository;
28
+ };
29
+ services: {
30
+ member: import("./services").MemberService;
31
+ discordAccount: import("./services").DiscordAccountService;
32
+ event: import("./services").EventService;
33
+ exhibit: import("./services").ExhibitService;
34
+ };
35
+ disconnect: () => Promise<void>;
36
+ };
37
+ export type Client = ReturnType<typeof createClient>;
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
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
+ exports.createClient = void 0;
18
+ const client_1 = require("@prisma/client");
19
+ const repositories_1 = require("./repositories");
20
+ const services_1 = require("./services");
21
+ // 基本機能のエクスポート
22
+ __exportStar(require("./repositories"), exports);
23
+ __exportStar(require("./services"), exports);
24
+ // クライアント作成関数
25
+ const createClient = ({ prismaOptions } = {}) => {
26
+ try {
27
+ const prisma = new client_1.PrismaClient(prismaOptions);
28
+ const repositories = (0, repositories_1.createRepositories)(prisma);
29
+ const services = (0, services_1.createServices)(repositories);
30
+ return {
31
+ prisma,
32
+ repositories,
33
+ services,
34
+ disconnect: async () => {
35
+ await prisma.$disconnect();
36
+ },
37
+ };
38
+ }
39
+ catch (error) {
40
+ if (error instanceof Error) {
41
+ throw new Error(`Failed to create client: ${error.message}`);
42
+ }
43
+ throw new Error("Failed to create client: Unknown error");
44
+ }
45
+ };
46
+ exports.createClient = createClient;
@@ -0,0 +1,12 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import type { IBaseRepository } from "./interfaces/base.repository.interface";
3
+ export declare abstract class BaseRepository<T, CreateInput, UpdateInput, FindManyArgs = unknown> implements IBaseRepository<T, CreateInput, UpdateInput, FindManyArgs> {
4
+ protected readonly prisma: PrismaClient;
5
+ protected readonly modelName: string;
6
+ constructor(prisma: PrismaClient, modelName: string);
7
+ abstract findById(id: string): Promise<T | null>;
8
+ abstract create(data: CreateInput): Promise<T>;
9
+ abstract update(id: string, data: UpdateInput): Promise<T>;
10
+ abstract delete(id: string): Promise<T>;
11
+ abstract findMany(params?: FindManyArgs): Promise<T[]>;
12
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRepository = void 0;
4
+ class BaseRepository {
5
+ constructor(prisma, modelName) {
6
+ this.prisma = prisma;
7
+ this.modelName = modelName;
8
+ }
9
+ }
10
+ exports.BaseRepository = BaseRepository;
@@ -0,0 +1,12 @@
1
+ import type { DiscordAccount, Prisma, PrismaClient } from "@prisma/client";
2
+ import { BaseRepository } from "./base.repository";
3
+ import type { IDiscordAccountRepository } from "./interfaces/discordAccount.repository.interface";
4
+ export declare class DiscordAccountRepository extends BaseRepository<DiscordAccount, Prisma.DiscordAccountCreateInput, Prisma.DiscordAccountUpdateInput, Prisma.DiscordAccountFindManyArgs> implements IDiscordAccountRepository {
5
+ constructor(prisma: PrismaClient);
6
+ findById(discordId: string): Promise<DiscordAccount | null>;
7
+ create(data: Prisma.DiscordAccountCreateInput): Promise<DiscordAccount>;
8
+ update(discordId: string, data: Prisma.DiscordAccountUpdateInput): Promise<DiscordAccount>;
9
+ delete(discordId: string): Promise<DiscordAccount>;
10
+ findMany(params?: Prisma.DiscordAccountFindManyArgs): Promise<DiscordAccount[]>;
11
+ findByMemberId(memberId: string): Promise<DiscordAccount[]>;
12
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscordAccountRepository = void 0;
4
+ const base_repository_1 = require("./base.repository");
5
+ class DiscordAccountRepository extends base_repository_1.BaseRepository {
6
+ constructor(prisma) {
7
+ super(prisma, "discordAccount");
8
+ }
9
+ async findById(discordId) {
10
+ return this.prisma.discordAccount.findUnique({
11
+ where: { id: discordId },
12
+ include: {
13
+ member: true,
14
+ },
15
+ });
16
+ }
17
+ async create(data) {
18
+ return this.prisma.discordAccount.create({
19
+ data: {
20
+ ...data,
21
+ id: data.id, // NOTE: ここでDiscordIDを指定
22
+ },
23
+ include: {
24
+ member: true,
25
+ },
26
+ });
27
+ }
28
+ async update(discordId, data) {
29
+ return this.prisma.discordAccount.update({
30
+ where: { id: discordId },
31
+ data,
32
+ include: {
33
+ member: true,
34
+ },
35
+ });
36
+ }
37
+ async delete(discordId) {
38
+ return this.prisma.discordAccount.delete({
39
+ where: { id: discordId },
40
+ });
41
+ }
42
+ async findMany(params) {
43
+ return this.prisma.discordAccount.findMany(params);
44
+ }
45
+ async findByMemberId(memberId) {
46
+ return this.prisma.discordAccount.findMany({
47
+ where: { memberId },
48
+ });
49
+ }
50
+ }
51
+ exports.DiscordAccountRepository = DiscordAccountRepository;
@@ -0,0 +1,14 @@
1
+ import type { Event, Prisma, PrismaClient } from "@prisma/client";
2
+ import { BaseRepository } from "./base.repository";
3
+ import type { IEventRepository } from "./interfaces/event.repository.interface";
4
+ export declare class EventRepository extends BaseRepository<Event, Prisma.EventCreateInput, Prisma.EventUpdateInput, Prisma.EventFindManyArgs> implements IEventRepository {
5
+ constructor(prisma: PrismaClient);
6
+ findById(id: string): Promise<Event | null>;
7
+ create(data: Prisma.EventCreateInput): Promise<Event>;
8
+ update(id: string, data: Prisma.EventUpdateInput): Promise<Event>;
9
+ delete(id: string): Promise<Event>;
10
+ findMany(params?: Prisma.EventFindManyArgs): Promise<Event[]>;
11
+ findUpcoming(limit?: number): Promise<Event[]>;
12
+ findWithMembers(id: string): Promise<Event | null>;
13
+ findWithExhibits(id: string): Promise<Event | null>;
14
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventRepository = void 0;
4
+ const base_repository_1 = require("./base.repository");
5
+ class EventRepository extends base_repository_1.BaseRepository {
6
+ constructor(prisma) {
7
+ super(prisma, "event");
8
+ }
9
+ async findById(id) {
10
+ return this.prisma.event.findUnique({
11
+ where: { id },
12
+ });
13
+ }
14
+ async create(data) {
15
+ return this.prisma.event.create({
16
+ data,
17
+ });
18
+ }
19
+ async update(id, data) {
20
+ return this.prisma.event.update({
21
+ where: { id },
22
+ data,
23
+ });
24
+ }
25
+ async delete(id) {
26
+ return this.prisma.event.delete({
27
+ where: { id },
28
+ });
29
+ }
30
+ async findMany(params) {
31
+ return this.prisma.event.findMany(params);
32
+ }
33
+ async findUpcoming(limit) {
34
+ return this.prisma.event.findMany({
35
+ where: {
36
+ date: {
37
+ gte: new Date(),
38
+ },
39
+ },
40
+ orderBy: {
41
+ date: "asc",
42
+ },
43
+ take: limit,
44
+ });
45
+ }
46
+ async findWithMembers(id) {
47
+ return this.prisma.event.findUnique({
48
+ where: { id },
49
+ include: {
50
+ members: {
51
+ include: {
52
+ member: true,
53
+ },
54
+ },
55
+ },
56
+ });
57
+ }
58
+ async findWithExhibits(id) {
59
+ return this.prisma.event.findUnique({
60
+ where: { id },
61
+ include: {
62
+ exhibits: true,
63
+ },
64
+ });
65
+ }
66
+ }
67
+ exports.EventRepository = EventRepository;
@@ -0,0 +1,13 @@
1
+ import type { Exhibit, Prisma, PrismaClient } from "@prisma/client";
2
+ import { BaseRepository } from "./base.repository";
3
+ import type { IExhibitRepository } from "./interfaces/exhibit.repository.interface";
4
+ export declare class ExhibitRepository extends BaseRepository<Exhibit, Prisma.ExhibitCreateInput, Prisma.ExhibitUpdateInput, Prisma.ExhibitFindManyArgs> implements IExhibitRepository {
5
+ constructor(prisma: PrismaClient);
6
+ findById(id: string): Promise<Exhibit | null>;
7
+ create(data: Prisma.ExhibitCreateInput): Promise<Exhibit>;
8
+ update(id: string, data: Prisma.ExhibitUpdateInput): Promise<Exhibit>;
9
+ delete(id: string): Promise<Exhibit>;
10
+ findMany(params?: Prisma.ExhibitFindManyArgs): Promise<Exhibit[]>;
11
+ findByEventId(eventId: string): Promise<Exhibit[]>;
12
+ findWithMembers(id: string): Promise<Exhibit | null>;
13
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExhibitRepository = void 0;
4
+ const base_repository_1 = require("./base.repository");
5
+ class ExhibitRepository extends base_repository_1.BaseRepository {
6
+ constructor(prisma) {
7
+ super(prisma, "exhibit");
8
+ }
9
+ async findById(id) {
10
+ return this.prisma.exhibit.findUnique({
11
+ where: { id },
12
+ });
13
+ }
14
+ async create(data) {
15
+ return this.prisma.exhibit.create({
16
+ data,
17
+ });
18
+ }
19
+ async update(id, data) {
20
+ return this.prisma.exhibit.update({
21
+ where: { id },
22
+ data,
23
+ });
24
+ }
25
+ async delete(id) {
26
+ return this.prisma.exhibit.delete({
27
+ where: { id },
28
+ });
29
+ }
30
+ async findMany(params) {
31
+ return this.prisma.exhibit.findMany(params);
32
+ }
33
+ async findByEventId(eventId) {
34
+ return this.prisma.exhibit.findMany({
35
+ where: { eventId },
36
+ });
37
+ }
38
+ async findWithMembers(id) {
39
+ return this.prisma.exhibit.findUnique({
40
+ where: { id },
41
+ include: {
42
+ members: {
43
+ include: {
44
+ member: true,
45
+ },
46
+ },
47
+ },
48
+ });
49
+ }
50
+ }
51
+ exports.ExhibitRepository = ExhibitRepository;
@@ -0,0 +1,16 @@
1
+ import type { PrismaClient } from "@prisma/client";
2
+ import { DiscordAccountRepository } from "./discordAccount.repository";
3
+ import { EventRepository } from "./event.repository";
4
+ import { ExhibitRepository } from "./exhibit.repository";
5
+ import { MemberRepository } from "./member.repository";
6
+ import { MemberEventRepository } from "./memberEvent.repository";
7
+ import { MemberExhibitRepository } from "./memberExhibit.repository";
8
+ export declare const createRepositories: (prisma: PrismaClient) => {
9
+ member: MemberRepository;
10
+ discordAccount: DiscordAccountRepository;
11
+ event: EventRepository;
12
+ exhibit: ExhibitRepository;
13
+ memberEvent: MemberEventRepository;
14
+ memberExhibit: MemberExhibitRepository;
15
+ };
16
+ export type Repositories = ReturnType<typeof createRepositories>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRepositories = void 0;
4
+ const discordAccount_repository_1 = require("./discordAccount.repository");
5
+ const event_repository_1 = require("./event.repository");
6
+ const exhibit_repository_1 = require("./exhibit.repository");
7
+ const member_repository_1 = require("./member.repository");
8
+ const memberEvent_repository_1 = require("./memberEvent.repository");
9
+ const memberExhibit_repository_1 = require("./memberExhibit.repository");
10
+ const createRepositories = (prisma) => {
11
+ return {
12
+ member: new member_repository_1.MemberRepository(prisma),
13
+ discordAccount: new discordAccount_repository_1.DiscordAccountRepository(prisma),
14
+ event: new event_repository_1.EventRepository(prisma),
15
+ exhibit: new exhibit_repository_1.ExhibitRepository(prisma),
16
+ memberEvent: new memberEvent_repository_1.MemberEventRepository(prisma),
17
+ memberExhibit: new memberExhibit_repository_1.MemberExhibitRepository(prisma),
18
+ };
19
+ };
20
+ exports.createRepositories = createRepositories;
@@ -0,0 +1 @@
1
+ export * from "./factory";
@@ -0,0 +1,17 @@
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("./factory"), exports);
@@ -0,0 +1,7 @@
1
+ export interface IBaseRepository<T, CreateInput, UpdateInput, FindManyArgs> {
2
+ findById(id: string): Promise<T | null>;
3
+ create(data: CreateInput): Promise<T>;
4
+ update(id: string, data: UpdateInput): Promise<T>;
5
+ delete(id: string): Promise<T>;
6
+ findMany(params?: FindManyArgs): Promise<T[]>;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { DiscordAccount, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IDiscordAccountRepository extends IBaseRepository<DiscordAccount, Prisma.DiscordAccountCreateInput, Prisma.DiscordAccountUpdateInput, Prisma.DiscordAccountFindManyArgs> {
4
+ findByMemberId(memberId: string): Promise<DiscordAccount[]>;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import type { Event, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IEventRepository extends IBaseRepository<Event, Prisma.EventCreateInput, Prisma.EventUpdateInput, Prisma.EventFindManyArgs> {
4
+ findUpcoming(limit?: number): Promise<Event[]>;
5
+ findWithMembers(id: string): Promise<Event | null>;
6
+ findWithExhibits(id: string): Promise<Event | null>;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { Exhibit, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IExhibitRepository extends IBaseRepository<Exhibit, Prisma.ExhibitCreateInput, Prisma.ExhibitUpdateInput, Prisma.ExhibitFindManyArgs> {
4
+ findByEventId(eventId: string): Promise<Exhibit[]>;
5
+ findWithMembers(id: string): Promise<Exhibit | null>;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export * from "./base.repository.interface";
2
+ export * from "./member.repository.interface";
3
+ export * from "./discordAccount.repository.interface";
4
+ export * from "./event.repository.interface";
5
+ export * from "./exhibit.repository.interface";
6
+ export * from "./memberEvent.repository.interface";
7
+ export * from "./memberExhibit.repository.interface";
@@ -0,0 +1,23 @@
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("./base.repository.interface"), exports);
18
+ __exportStar(require("./member.repository.interface"), exports);
19
+ __exportStar(require("./discordAccount.repository.interface"), exports);
20
+ __exportStar(require("./event.repository.interface"), exports);
21
+ __exportStar(require("./exhibit.repository.interface"), exports);
22
+ __exportStar(require("./memberEvent.repository.interface"), exports);
23
+ __exportStar(require("./memberExhibit.repository.interface"), exports);
@@ -0,0 +1,6 @@
1
+ import type { Member, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IMemberRepository extends IBaseRepository<Member, Prisma.MemberCreateInput, Prisma.MemberUpdateInput, Prisma.MemberFindManyArgs> {
4
+ findByEmail(email: string): Promise<Member | null>;
5
+ findByStudentId(studentId: string): Promise<Member[]>;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { MemberEvent, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IMemberEventRepository extends IBaseRepository<MemberEvent, Prisma.MemberEventCreateInput, Prisma.MemberEventUpdateInput, Prisma.MemberEventFindManyArgs> {
4
+ findByMemberId(memberId: string): Promise<MemberEvent[]>;
5
+ findByEventId(eventId: string): Promise<MemberEvent[]>;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { MemberExhibit, Prisma } from "@prisma/client";
2
+ import type { IBaseRepository } from "./base.repository.interface";
3
+ export interface IMemberExhibitRepository extends IBaseRepository<MemberExhibit, Prisma.MemberExhibitCreateInput, Prisma.MemberExhibitUpdateInput, Prisma.MemberExhibitFindManyArgs> {
4
+ findByMemberId(memberId: string): Promise<MemberExhibit[]>;
5
+ findByExhibitId(exhibitId: string): Promise<MemberExhibit[]>;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ import type { Member, Prisma, PrismaClient } from "@prisma/client";
2
+ import { BaseRepository } from "./base.repository";
3
+ import type { IMemberRepository } from "./interfaces/member.repository.interface";
4
+ export declare class MemberRepository extends BaseRepository<Member, Prisma.MemberCreateInput, Prisma.MemberUpdateInput, Prisma.MemberFindManyArgs> implements IMemberRepository {
5
+ constructor(prisma: PrismaClient);
6
+ findById(id: string): Promise<Member | null>;
7
+ create(data: Prisma.MemberCreateInput): Promise<Member>;
8
+ update(id: string, data: Prisma.MemberUpdateInput): Promise<Member>;
9
+ delete(id: string): Promise<Member>;
10
+ findMany(params?: Prisma.MemberFindManyArgs): Promise<Member[]>;
11
+ findByEmail(email: string): Promise<Member | null>;
12
+ findByStudentId(studentId: string): Promise<Member[]>;
13
+ }