Skip to content
Snippets Groups Projects
Select Git revision
  • febfc3f86f4b9ea9b3e42a3ceff66cf8d7b6c86b
  • main default protected
2 results

cours_27.md

Blame
  • schema.prisma 2.26 KiB
    generator client {
        provider = "prisma-client-js"
    }
    
    datasource db {
        provider = "mysql"
        url      = env("DATABASE_URL")
    }
    
    enum UserRole {
        STUDENT
        TEACHING_STAFF
        ADMIN
    }
    
    enum TagType {
        LANGUAGE
    	FRAMEWORK
    	THEME
    	USERDEFINED
    }
    
    enum SubmissionStatus{
        PENDINGAPPROVAL
    	DECLINED
    	APPROVED
    }
    
    model User {
        id             Int       @id /// The user's id is the same as their gitlab id
        name           String?
        mail           String?   @unique
        role           UserRole? @default(STUDENT)
        gitlabUsername String    @unique
        gitlabLastInfo Json      @default("{}") @db.Json
        deleted        Boolean   @default(false)
    
        assignments Assignment[]
        exercises   Exercise[]
    }
    
    model Assignment {
        name               String   @id
        gitlabId           Int
        gitlabLink         String
        gitlabCreationInfo Json     @db.Json
        gitlabLastInfo     Json     @db.Json
        gitlabLastInfoDate DateTime
        published          Boolean  @default(false)
    
        exercises Exercise[]
        staff     User[]
        tags     Tag[]
    }
    
    model Exercise {
        id                 String   @id @db.Char(36)
        assignmentName     String
        name               String
        secret             String   @unique @db.Char(36)
        gitlabId           Int
        gitlabLink         String
        gitlabCreationInfo Json     @db.Json
        gitlabLastInfo     Json     @db.Json
        gitlabLastInfoDate DateTime
    
        correctionCommit      Json?   @db.Json
        correctionDescription String? @db.VarChar(80)
    
        assignment Assignment @relation(fields: [assignmentName], references: [name], onDelete: NoAction, onUpdate: Cascade)
    
        members User[]
        results Result[]
        tags    Tag[]
    }
    
    model Result {
        exerciseId String   @db.Char(36)
        dateTime   DateTime @default(now())
        success    Boolean
        exitCode   Int
        commit     Json     @db.Json
        results    Json     @db.Json
        files      Json     @db.Json
    
        exercise Exercise @relation(fields: [exerciseId], references: [id], onDelete: Cascade, onUpdate: Cascade)
    
        @@id([exerciseId, dateTime])
    }
    
    model Tag {
        name        String   @id @db.Char(36)
        type        TagType     
    
        assignment  Assignment[]
        exercise    Exercise[]
    }
    
    model SubmissionTag {
        name        String   @id @db.Char(36)
        type        TagType       
    }