79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.4 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
 | |
| }
 |