// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
    provider = "prisma-client-js"
}

datasource db {
    provider = "sqlite"
    url      = env("DATABASE_URL")
}

// MYP Schema
model Printer {
    id          Int        @id @unique
    name        String
    description String
    status      Int
    created_at  DateTime
    updated_at  DateTime
    PrintJob    PrintJob[]
}

model PrintJob {
    id                  Int      @id @unique
    printer_id          Int
    user_id             String
    start_at            DateTime
    duration_in_minutes Int
    comments            String
    aborted             Boolean  @default(false)
    abort_reason        String
    created_at          DateTime
    updated_at          DateTime
    Printer             Printer  @relation(fields: [printer_id], references: [id])
    User                User     @relation(fields: [user_id], references: [id])
}

// Necessary for Next auth
model Account {
    id                String  @id @default(cuid())
    userId            String
    type              String
    provider          String
    providerAccountId String
    refresh_token     String? // @db.Text
    access_token      String? // @db.Text
    expires_at        Int?
    token_type        String?
    scope             String?
    id_token          String? // @db.Text
    session_state     String?
    user              User    @relation(fields: [userId], references: [id], onDelete: Cascade)

    @@unique([provider, providerAccountId])
}

model Session {
    id           String   @id @default(cuid())
    sessionToken String   @unique
    userId       String
    expires      DateTime
    user         User     @relation(fields: [userId], references: [id], onDelete: Cascade)
}

model User {
    id            String     @id @default(cuid())
    name          String?
    email         String?    @unique
    role          Int        @default(0) // 0: Guest, 1: User, 2: Admin
    emailVerified DateTime?
    image         String?
    accounts      Account[]
    sessions      Session[]
    PrintJob      PrintJob[]
}

model VerificationToken {
    identifier String
    token      String   @unique
    expires    DateTime

    @@unique([identifier, token])
}