78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // 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"
 | |
|   binaryTargets = ["native", "debian-openssl-3.0.x"]
 | |
|   output        = "/app/generated/prisma-client"
 | |
| }
 | |
| 
 | |
| datasource db {
 | |
|   provider = "postgresql"
 | |
|   // NOTE: When using mysql or sqlserver, uncomment the @db.Text annotations in model Account below
 | |
|   // Further reading:
 | |
|   // https://next-auth.js.org/adapters/prisma#create-the-prisma-schema
 | |
|   // https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string
 | |
|   url      = env("DATABASE_URL")
 | |
| }
 | |
| 
 | |
| // 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)
 | |
|   refresh_token_expires_in Int?
 | |
| 
 | |
|   @@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
 | |
|   emailVerified DateTime?
 | |
|   image         String?
 | |
|   accounts      Account[]
 | |
|   sessions      Session[]
 | |
|   files         File[] // Relation to the File model
 | |
| }
 | |
| 
 | |
| model VerificationToken {
 | |
|   identifier String
 | |
|   token      String   @unique
 | |
|   expires    DateTime
 | |
| 
 | |
|   @@unique([identifier, token])
 | |
| }
 | |
| 
 | |
| model File {
 | |
|   id           String   @id @default(cuid())
 | |
|   url          String
 | |
|   name         String
 | |
|   size         Int // Size in bytes
 | |
|   extension    String
 | |
|   uploadDate   DateTime @default(now())
 | |
|   description  String   @default("")
 | |
|   uploadedBy   User?    @relation(fields: [uploadedById], references: [id], onDelete: SetNull)
 | |
|   uploadedById String?
 | |
|   public       Boolean  @default(false) // Indicates if the file is public or private
 | |
| }
 |