mirror of
https://github.com/massbug/judge4c.git
synced 2025-07-04 15:50:51 +00:00
Add new key isRandom to determine whether the random system works. Add new keys answerType, which is the type of AnswerType Array to keep record the types of input, and lengthOfArray. Complete the first edition of random array generate.
273 lines
5.6 KiB
Plaintext
273 lines
5.6 KiB
Plaintext
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
output = "../src/generated/client"
|
|
}
|
|
|
|
enum Role {
|
|
ADMIN
|
|
GUEST
|
|
}
|
|
|
|
enum Difficulty {
|
|
EASY
|
|
MEDIUM
|
|
HARD
|
|
}
|
|
|
|
enum Locale {
|
|
en
|
|
zh
|
|
}
|
|
|
|
enum Language {
|
|
c
|
|
cpp
|
|
}
|
|
|
|
enum Protocol {
|
|
ws
|
|
wss
|
|
}
|
|
|
|
enum AnswerType {
|
|
NS // Not Suitable
|
|
INT // Single Integer
|
|
FLOAT // Single Float
|
|
CHAR // Single Character
|
|
INTARRAY // Integer Array
|
|
FLOATARRAY // Float Array
|
|
STRING // Single String
|
|
STRINGARRAY // String Array
|
|
}
|
|
|
|
enum Status {
|
|
PD // PENDING
|
|
QD // QUEUED
|
|
CP // COMPILING
|
|
CE // Compilation Error
|
|
CS // Compilation Success
|
|
RU // RUNNING
|
|
TLE // Time Limit Exceeded
|
|
MLE // Memory Limit Exceeded
|
|
RE // Runtime Error
|
|
AC // Accepted
|
|
WA // Wrong Answer
|
|
SE // System Error
|
|
}
|
|
|
|
enum ProblemContentType {
|
|
TITLE
|
|
DESCRIPTION
|
|
SOLUTION
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
name String?
|
|
email String @unique
|
|
password String?
|
|
emailVerified DateTime?
|
|
image String?
|
|
role Role @default(GUEST)
|
|
|
|
accounts Account[]
|
|
sessions Session[]
|
|
// Optional for WebAuthn support
|
|
Authenticator Authenticator[]
|
|
problems Problem[]
|
|
submissions Submission[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Problem {
|
|
id String @id @default(cuid())
|
|
displayId Int @unique
|
|
difficulty Difficulty @default(EASY)
|
|
isPublished Boolean @default(false)
|
|
trim Boolean @default(false)
|
|
timeLimit Int @default(1000)
|
|
memoryLimit Int @default(134217728)
|
|
isRandom Boolean @default(false)
|
|
answerType AnswerType[]
|
|
lengthOfArray Int[]
|
|
|
|
localizations ProblemLocalization[]
|
|
templates Template[]
|
|
testcases Testcase[]
|
|
submissions Submission[]
|
|
|
|
userId String?
|
|
|
|
user User? @relation(fields: [userId], references: [id], onDelete: SetNull)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model ProblemLocalization {
|
|
problemId String
|
|
locale Locale
|
|
type ProblemContentType
|
|
|
|
content String
|
|
|
|
problem Problem @relation(fields: [problemId], references: [id], onDelete: Cascade)
|
|
|
|
@@id([problemId, locale, type])
|
|
}
|
|
|
|
model Template {
|
|
problemId String
|
|
language Language
|
|
|
|
content String
|
|
|
|
problem Problem @relation(fields: [problemId], references: [id], onDelete: Cascade)
|
|
|
|
@@id([problemId, language])
|
|
}
|
|
|
|
model Submission {
|
|
id String @id @default(cuid())
|
|
language Language
|
|
content String
|
|
status Status
|
|
message String?
|
|
timeUsage Int?
|
|
memoryUsage Int?
|
|
|
|
testcaseResults TestcaseResult[]
|
|
|
|
userId String
|
|
problemId String
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
problem Problem @relation(fields: [problemId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model Testcase {
|
|
id String @id @default(cuid())
|
|
expectedOutput String
|
|
|
|
inputs TestcaseInput[]
|
|
testcaseResults TestcaseResult[]
|
|
|
|
problemId String
|
|
|
|
problem Problem @relation(fields: [problemId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model TestcaseInput {
|
|
id String @id @default(cuid())
|
|
index Int
|
|
name String
|
|
value String
|
|
|
|
testcaseId String
|
|
|
|
testcase Testcase @relation(fields: [testcaseId], references: [id], onDelete: Cascade)
|
|
}
|
|
|
|
model TestcaseResult {
|
|
id String @id @default(cuid())
|
|
isCorrect Boolean
|
|
output String?
|
|
timeUsage Int?
|
|
memoryUsage Int?
|
|
|
|
submissionId String
|
|
testcaseId String
|
|
|
|
submission Submission @relation(fields: [submissionId], references: [id], onDelete: Cascade)
|
|
testcase Testcase @relation(fields: [testcaseId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model DockerConfig {
|
|
language Language @id
|
|
image String
|
|
tag String
|
|
workingDir String
|
|
compileOutputLimit Int @default(1048576)
|
|
runOutputLimit Int @default(1048576)
|
|
}
|
|
|
|
model LanguageServerConfig {
|
|
language Language @id
|
|
protocol Protocol
|
|
hostname String
|
|
port Int?
|
|
path String?
|
|
}
|
|
|
|
model Account {
|
|
userId String
|
|
type String
|
|
provider String
|
|
providerAccountId String
|
|
refresh_token String?
|
|
access_token String?
|
|
expires_at Int?
|
|
token_type String?
|
|
scope String?
|
|
id_token String?
|
|
session_state String?
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@id([provider, providerAccountId])
|
|
}
|
|
|
|
model Session {
|
|
sessionToken String @unique
|
|
userId String
|
|
expires DateTime
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model VerificationToken {
|
|
identifier String
|
|
token String
|
|
expires DateTime
|
|
|
|
@@id([identifier, token])
|
|
}
|
|
|
|
// Optional for WebAuthn support
|
|
model Authenticator {
|
|
credentialID String @unique
|
|
userId String
|
|
providerAccountId String
|
|
credentialPublicKey String
|
|
counter Int
|
|
credentialDeviceType String
|
|
credentialBackedUp Boolean
|
|
transports String?
|
|
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
|
|
@@id([userId, credentialID])
|
|
}
|