@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.
- package/README.md +120 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +46 -0
- package/dist/repositories/base.repository.d.ts +12 -0
- package/dist/repositories/base.repository.js +10 -0
- package/dist/repositories/discordAccount.repository.d.ts +12 -0
- package/dist/repositories/discordAccount.repository.js +51 -0
- package/dist/repositories/event.repository.d.ts +14 -0
- package/dist/repositories/event.repository.js +67 -0
- package/dist/repositories/exhibit.repository.d.ts +13 -0
- package/dist/repositories/exhibit.repository.js +51 -0
- package/dist/repositories/factory.d.ts +16 -0
- package/dist/repositories/factory.js +20 -0
- package/dist/repositories/index.d.ts +1 -0
- package/dist/repositories/index.js +17 -0
- package/dist/repositories/interfaces/base.repository.interface.d.ts +7 -0
- package/dist/repositories/interfaces/base.repository.interface.js +2 -0
- package/dist/repositories/interfaces/discordAccount.repository.interface.d.ts +5 -0
- package/dist/repositories/interfaces/discordAccount.repository.interface.js +2 -0
- package/dist/repositories/interfaces/event.repository.interface.d.ts +7 -0
- package/dist/repositories/interfaces/event.repository.interface.js +2 -0
- package/dist/repositories/interfaces/exhibit.repository.interface.d.ts +6 -0
- package/dist/repositories/interfaces/exhibit.repository.interface.js +2 -0
- package/dist/repositories/interfaces/index.d.ts +7 -0
- package/dist/repositories/interfaces/index.js +23 -0
- package/dist/repositories/interfaces/member.repository.interface.d.ts +6 -0
- package/dist/repositories/interfaces/member.repository.interface.js +2 -0
- package/dist/repositories/interfaces/memberEvent.repository.interface.d.ts +6 -0
- package/dist/repositories/interfaces/memberEvent.repository.interface.js +2 -0
- package/dist/repositories/interfaces/memberExhibit.repository.interface.d.ts +6 -0
- package/dist/repositories/interfaces/memberExhibit.repository.interface.js +2 -0
- package/dist/repositories/member.repository.d.ts +13 -0
- package/dist/repositories/member.repository.js +44 -0
- package/dist/repositories/memberEvent.repository.d.ts +13 -0
- package/dist/repositories/memberEvent.repository.js +62 -0
- package/dist/repositories/memberExhibit.repository.d.ts +13 -0
- package/dist/repositories/memberExhibit.repository.js +62 -0
- package/dist/services/base.service.d.ts +17 -0
- package/dist/services/base.service.js +18 -0
- package/dist/services/discordAccount.service.d.ts +12 -0
- package/dist/services/discordAccount.service.js +54 -0
- package/dist/services/event.service.d.ts +18 -0
- package/dist/services/event.service.js +90 -0
- package/dist/services/exhibit.service.d.ts +19 -0
- package/dist/services/exhibit.service.js +117 -0
- package/dist/services/factory.d.ts +12 -0
- package/dist/services/factory.js +16 -0
- package/dist/services/index.d.ts +7 -0
- package/dist/services/index.js +23 -0
- package/dist/services/interfaces/base.service.interface.d.ts +7 -0
- package/dist/services/interfaces/base.service.interface.js +2 -0
- package/dist/services/interfaces/discordAccount.service.interface.d.ts +14 -0
- package/dist/services/interfaces/discordAccount.service.interface.js +2 -0
- package/dist/services/interfaces/event.service.interface.d.ts +15 -0
- package/dist/services/interfaces/event.service.interface.js +2 -0
- package/dist/services/interfaces/exhibit.service.interface.d.ts +16 -0
- package/dist/services/interfaces/exhibit.service.interface.js +2 -0
- package/dist/services/interfaces/index.d.ts +5 -0
- package/dist/services/interfaces/index.js +21 -0
- package/dist/services/interfaces/member.service.interface.d.ts +16 -0
- package/dist/services/interfaces/member.service.interface.js +2 -0
- package/dist/services/interfaces/types.d.ts +1 -0
- package/dist/services/interfaces/types.js +2 -0
- package/dist/services/member.service.d.ts +14 -0
- package/dist/services/member.service.js +52 -0
- package/package.json +40 -0
- 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
|
package/dist/index.d.ts
ADDED
|
@@ -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,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,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,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,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,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,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,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
|
+
}
|