Skip to content

Commit 6892c24

Browse files
committed
Prisma init
1 parent 3bf8530 commit 6892c24

File tree

6 files changed

+121
-3
lines changed

6 files changed

+121
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# idea
22
.idea
3+
volume
34

45
# Logs
56
logs

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ The CodeBench main API.
55
## Requirements
66

77
- NodeJS v14+
8-
- RabbitMQ see the `docker-compose.yml`
8+
- RabbitMQ and Postgres see the `docker-compose.yml`
99
- Copy `.env.example` to `.env` and fill it as needed.
1010

1111
## Setup

docker-compose.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,14 @@ services:
99
ports:
1010
- 5672:5672
1111
- 15672:15672
12+
postgres:
13+
image: postgres:13.2-alpine
14+
environment:
15+
POSTGRES_USER: admin
16+
POSTGRES_PASSWORD: admin
17+
PGDATA: /data/postgres
18+
POSTGRES_DB: codebench
19+
volumes:
20+
- ./volume/postgres:/data/postgres
21+
ports:
22+
- 5432:5432

package-lock.json

Lines changed: 33 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
},
1919
"homepage": "https://github.com/codebench-esgi/codebench-api#readme",
2020
"dependencies": {
21+
"@prisma/client": "^2.22.1",
2122
"amqplib": "^0.7.1",
2223
"body-parser": "^1.19.0",
2324
"dotenv": "^9.0.2",
@@ -30,6 +31,7 @@
3031
"@types/node": "^12.20.12",
3132
"@types/uuid": "^8.3.0",
3233
"nodemon": "^2.0.7",
34+
"prisma": "^2.22.1",
3335
"ts-node": "9.1.1",
3436
"typescript": "4.2.4"
3537
}

prisma/schema.prisma

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
generator client {
2+
provider = "prisma-client-js"
3+
}
4+
5+
datasource db {
6+
provider = "postgresql"
7+
url = env("DATABASE_URL")
8+
}
9+
10+
model User {
11+
id Int @id @default(autoincrement())
12+
username String @unique @db.VarChar(255)
13+
email String @unique @db.VarChar(255)
14+
password String @db.VarChar(65)
15+
profilepicurl String?
16+
benchmarks Benchmark[]
17+
comments Comment[]
18+
sessions Session[]
19+
}
20+
21+
model Benchmark {
22+
id Int @id @default(autoincrement())
23+
title String
24+
subject String
25+
giturl String?
26+
createdAt DateTime @default(now()) @db.Timestamp(6)
27+
difficulty String?
28+
userId Int
29+
user User @relation(fields: [userId], references: [id])
30+
comments Comment[]
31+
try Try[]
32+
}
33+
34+
model Comment {
35+
id Int @id @default(autoincrement())
36+
comment String
37+
createdAt DateTime @default(now()) @db.Timestamp(6)
38+
benchmarkId Int
39+
userId Int
40+
benchmark Benchmark @relation(fields: [benchmarkId], references: [id])
41+
user User @relation(fields: [userId], references: [id])
42+
}
43+
44+
model Language {
45+
id Int @id @default(autoincrement())
46+
name String @db.VarChar(255)
47+
implementation String @db.VarChar(255)
48+
version String @db.VarChar(255)
49+
try Try[]
50+
}
51+
52+
model Session {
53+
id Int @id @default(autoincrement())
54+
token String
55+
createdAt DateTime @default(now()) @db.Timestamp(6)
56+
deletedAt DateTime? @db.Timestamp(6)
57+
userId Int
58+
user User @relation(fields: [userId], references: [id])
59+
}
60+
61+
model Try {
62+
id Int @id @default(autoincrement())
63+
code String?
64+
stdoutput String?
65+
erroutput String?
66+
status String @db.VarChar(255)
67+
rate Int?
68+
createdAt DateTime @default(now()) @db.Timestamp(6)
69+
benchmarkId Int
70+
languageId Int
71+
benchmark Benchmark @relation(fields: [benchmarkId], references: [id])
72+
language Language @relation(fields: [languageId], references: [id])
73+
}

0 commit comments

Comments
 (0)