Add CommissionTypeForm

This commit is contained in:
2025-07-05 23:31:32 +02:00
parent babc1d95ba
commit 648ecda8d4
21 changed files with 1485 additions and 76 deletions

View File

@ -14,83 +14,161 @@ datasource db {
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
name String?
role Role @default(ADMIN)
createdAt DateTime @default(now())
}
enum Role {
ADMIN
ARTIST
}
model CommissionType {
id String @id @default(cuid())
title String
description String?
basePrice Float
deliveryEst String? // e.g. "2 weeks"
tags String[] // e.g. shaded, sketch, full-body
active Boolean @default(true)
createdAt DateTime @default(now())
CommissionRequest CommissionRequest[]
}
model CommissionRequest {
id String @id @default(cuid())
name String
email String
message String
typeId String
status RequestStatus @default(PENDING)
createdAt DateTime @default(now())
type CommissionType @relation(fields: [typeId], references: [id])
}
enum RequestStatus {
PENDING
ACCEPTED
IN_PROGRESS
DONE
REJECTED
}
model Artwork {
id String @id @default(cuid())
title String
imageUrl String
description String?
tags String[]
formats String[]
isPublic Boolean @default(true)
groupId String?
createdAt DateTime @default(now())
group PresentationGroup? @relation(fields: [groupId], references: [id])
}
model PresentationGroup {
id String @id @default(cuid())
name String
description String?
createdAt DateTime @default(now())
Artwork Artwork[]
}
model Preferences {
id String @id @default(cuid())
commissionOpen Boolean @default(true)
defaultDelivery String? // e.g. "7 days"
autoReplyMessage String?
notifyByEmail Boolean @default(true)
}
model TOS {
id String @id @default(cuid())
content String // Markdown or rich text
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sortIndex Int @default(0)
name String
description String?
options CommissionTypeOption[]
extras CommissionTypeExtra[]
}
model CommissionOption {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sortIndex Int @default(0)
name String
description String?
types CommissionTypeOption[]
}
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 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 User {
// id String @id @default(cuid())
// email String @unique
// name String?
// role Role @default(ADMIN)
// createdAt DateTime @default(now())
// }
// enum Role {
// ADMIN
// ARTIST
// }
// model CommissionType {
// id String @id @default(cuid())
// title String
// description String?
// basePrice Float
// deliveryEst String? // e.g. "2 weeks"
// tags String[] // e.g. shaded, sketch, full-body
// active Boolean @default(true)
// createdAt DateTime @default(now())
// CommissionRequest CommissionRequest[]
// }
// model CommissionRequest {
// id String @id @default(cuid())
// name String
// email String
// message String
// typeId String
// status RequestStatus @default(PENDING)
// createdAt DateTime @default(now())
// type CommissionType @relation(fields: [typeId], references: [id])
// }
// enum RequestStatus {
// PENDING
// ACCEPTED
// IN_PROGRESS
// DONE
// REJECTED
// }
// model Artwork {
// id String @id @default(cuid())
// title String
// imageUrl String
// description String?
// tags String[]
// formats String[]
// isPublic Boolean @default(true)
// groupId String?
// createdAt DateTime @default(now())
// group PresentationGroup? @relation(fields: [groupId], references: [id])
// }
// model PresentationGroup {
// id String @id @default(cuid())
// name String
// description String?
// createdAt DateTime @default(now())
// Artwork Artwork[]
// }
// model Preferences {
// id String @id @default(cuid())
// commissionOpen Boolean @default(true)
// defaultDelivery String? // e.g. "7 days"
// autoReplyMessage String?
// notifyByEmail Boolean @default(true)
// }
// model TOS {
// id String @id @default(cuid())
// content String // Markdown or rich text
// createdAt DateTime @default(now())
// }