339 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			339 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// This is your Prisma schema file,
 | 
						|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
 | 
						|
 | 
						|
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
 | 
						|
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
 | 
						|
 | 
						|
generator client {
 | 
						|
  provider = "prisma-client-js"
 | 
						|
  output   = "../src/generated/prisma"
 | 
						|
}
 | 
						|
 | 
						|
datasource db {
 | 
						|
  provider = "postgresql"
 | 
						|
  url      = env("DATABASE_URL")
 | 
						|
}
 | 
						|
 | 
						|
// Portfolio
 | 
						|
model PortfolioImage {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  fileKey      String  @unique
 | 
						|
  originalFile String  @unique
 | 
						|
  fileType     String
 | 
						|
  name         String
 | 
						|
  fileSize     Int
 | 
						|
  needsWork    Boolean @default(true)
 | 
						|
  nsfw         Boolean @default(false)
 | 
						|
  published    Boolean @default(false)
 | 
						|
  setAsHeader  Boolean @default(false)
 | 
						|
 | 
						|
  altText      String?
 | 
						|
  description  String?
 | 
						|
  month        Int?
 | 
						|
  year         Int?
 | 
						|
  creationDate DateTime?
 | 
						|
 | 
						|
  albumId String?
 | 
						|
  typeId  String?
 | 
						|
  album   PortfolioAlbum? @relation(fields: [albumId], references: [id])
 | 
						|
  type    PortfolioType?  @relation(fields: [typeId], references: [id])
 | 
						|
 | 
						|
  metadata ImageMetadata?
 | 
						|
 | 
						|
  categories   PortfolioCategory[]
 | 
						|
  colors       ImageColor[]
 | 
						|
  sortContexts PortfolioSortContext[]
 | 
						|
  tags         PortfolioTag[]
 | 
						|
  variants     ImageVariant[]
 | 
						|
}
 | 
						|
 | 
						|
model PortfolioAlbum {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String @unique
 | 
						|
  slug String @unique
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  images PortfolioImage[]
 | 
						|
}
 | 
						|
 | 
						|
model PortfolioType {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String @unique
 | 
						|
  slug String @unique
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  images PortfolioImage[]
 | 
						|
}
 | 
						|
 | 
						|
model PortfolioCategory {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String @unique
 | 
						|
  slug String @unique
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  images PortfolioImage[]
 | 
						|
}
 | 
						|
 | 
						|
model PortfolioTag {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String @unique
 | 
						|
  slug String @unique
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  images PortfolioImage[]
 | 
						|
}
 | 
						|
 | 
						|
model PortfolioSortContext {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  year      String
 | 
						|
  albumId   String
 | 
						|
  type      String
 | 
						|
  group     String
 | 
						|
  sortOrder Int
 | 
						|
 | 
						|
  imageId String
 | 
						|
  image   PortfolioImage @relation(fields: [imageId], references: [id])
 | 
						|
 | 
						|
  @@unique([imageId, year, albumId, type, group])
 | 
						|
}
 | 
						|
 | 
						|
model Color {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  name String @unique
 | 
						|
  type String
 | 
						|
 | 
						|
  hex   String?
 | 
						|
  blue  Int?
 | 
						|
  green Int?
 | 
						|
  red   Int?
 | 
						|
 | 
						|
  images ImageColor[]
 | 
						|
}
 | 
						|
 | 
						|
model ImageColor {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  imageId String
 | 
						|
  colorId String
 | 
						|
  type    String
 | 
						|
 | 
						|
  image PortfolioImage @relation(fields: [imageId], references: [id])
 | 
						|
  color Color          @relation(fields: [colorId], references: [id])
 | 
						|
 | 
						|
  @@unique([imageId, type])
 | 
						|
}
 | 
						|
 | 
						|
model ImageMetadata {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  imageId  String @unique
 | 
						|
  depth    String
 | 
						|
  format   String
 | 
						|
  space    String
 | 
						|
  channels Int
 | 
						|
  height   Int
 | 
						|
  width    Int
 | 
						|
 | 
						|
  autoOrientH   Int?
 | 
						|
  autoOrientW   Int?
 | 
						|
  bitsPerSample Int?
 | 
						|
  density       Int?
 | 
						|
  hasAlpha      Boolean?
 | 
						|
  hasProfile    Boolean?
 | 
						|
  isPalette     Boolean?
 | 
						|
  isProgressive Boolean?
 | 
						|
 | 
						|
  image PortfolioImage @relation(fields: [imageId], references: [id])
 | 
						|
}
 | 
						|
 | 
						|
model ImageVariant {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  imageId String
 | 
						|
  s3Key   String
 | 
						|
  type    String
 | 
						|
  height  Int
 | 
						|
  width   Int
 | 
						|
 | 
						|
  fileExtension String?
 | 
						|
  mimeType      String?
 | 
						|
  url           String?
 | 
						|
  sizeBytes     Int?
 | 
						|
 | 
						|
  image PortfolioImage @relation(fields: [imageId], references: [id])
 | 
						|
 | 
						|
  @@unique([imageId, type])
 | 
						|
}
 | 
						|
 | 
						|
model CommissionType {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  options      CommissionTypeOption[]
 | 
						|
  extras       CommissionTypeExtra[]
 | 
						|
  customInputs CommissionTypeCustomInput[]
 | 
						|
  requests     CommissionRequest[]
 | 
						|
}
 | 
						|
 | 
						|
model CommissionOption {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  types    CommissionTypeOption[]
 | 
						|
  requests CommissionRequest[]
 | 
						|
}
 | 
						|
 | 
						|
model CommissionExtra {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name String
 | 
						|
 | 
						|
  description String?
 | 
						|
 | 
						|
  types CommissionTypeExtra[]
 | 
						|
}
 | 
						|
 | 
						|
model CommissionCustomInput {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  name    String @unique
 | 
						|
  fieldId String
 | 
						|
 | 
						|
  types CommissionTypeCustomInput[]
 | 
						|
}
 | 
						|
 | 
						|
model CommissionTypeOption {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  typeId   String
 | 
						|
  optionId String
 | 
						|
 | 
						|
  priceRange   String?
 | 
						|
  pricePercent Float?
 | 
						|
  price        Float?
 | 
						|
 | 
						|
  type   CommissionType   @relation(fields: [typeId], references: [id])
 | 
						|
  option CommissionOption @relation(fields: [optionId], references: [id])
 | 
						|
 | 
						|
  @@unique([typeId, optionId])
 | 
						|
}
 | 
						|
 | 
						|
model CommissionTypeExtra {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  typeId  String
 | 
						|
  extraId String
 | 
						|
 | 
						|
  priceRange   String?
 | 
						|
  pricePercent Float?
 | 
						|
  price        Float?
 | 
						|
 | 
						|
  type  CommissionType  @relation(fields: [typeId], references: [id])
 | 
						|
  extra CommissionExtra @relation(fields: [extraId], references: [id])
 | 
						|
 | 
						|
  @@unique([typeId, extraId])
 | 
						|
}
 | 
						|
 | 
						|
model CommissionTypeCustomInput {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
  sortIndex Int      @default(0)
 | 
						|
 | 
						|
  typeId        String
 | 
						|
  customInputId String
 | 
						|
 | 
						|
  inputType String
 | 
						|
  label     String
 | 
						|
  required  Boolean @default(false)
 | 
						|
 | 
						|
  type        CommissionType        @relation(fields: [typeId], references: [id])
 | 
						|
  customInput CommissionCustomInput @relation(fields: [customInputId], references: [id])
 | 
						|
 | 
						|
  @@unique([typeId, customInputId])
 | 
						|
}
 | 
						|
 | 
						|
model TermsOfService {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  version  Int    @default(autoincrement())
 | 
						|
  markdown String
 | 
						|
}
 | 
						|
 | 
						|
model CommissionRequest {
 | 
						|
  id        String   @id @default(cuid())
 | 
						|
  createdAt DateTime @default(now())
 | 
						|
  updatedAt DateTime @updatedAt
 | 
						|
 | 
						|
  customerName  String
 | 
						|
  customerEmail String
 | 
						|
  message       String
 | 
						|
 | 
						|
  optionId String?
 | 
						|
  typeId   String?
 | 
						|
  option   CommissionOption? @relation(fields: [optionId], references: [id])
 | 
						|
  type     CommissionType?   @relation(fields: [typeId], references: [id])
 | 
						|
}
 |