Files
forgery/prisma/schema.prisma
T
google-labs-jules[bot] e66917d716 Refactor schema to use @default(ulid()) and remove manual assignment
- Update prisma/schema.prisma to use @default(ulid()) for all relevant models
- Remove manual ulid() calls from all service files
- Update list APIs to order by id descending
- Update AssetService tests to match new behavior
- Update AGENTS.md with new conventions
- Remove empty migration file (20260217022222_add_ulid_default)
2026-02-17 02:37:20 +00:00

156 lines
4.0 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"
output = "../src/generated/prisma"
binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
engineType = "client"
runtime = "bun"
}
datasource db {
provider = "sqlite"
}
model Asset {
id String @id @default(ulid())
name String
type String
path String
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
characters Character[]
equipments Equipment[]
generations Generation[]
poses Pose[]
expressions Expression[]
@@map("assets")
}
model Character {
id String @id @default(ulid())
name String
description String?
imageId String @map("image_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
image Asset @relation(fields: [imageId], references: [id])
generations Generation[]
@@map("characters")
}
model Equipment {
id String @id @default(ulid())
name String
description String
category String
subCategory String? @map("sub_category")
imageId String @map("image_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
image Asset @relation(fields: [imageId], references: [id])
generations GenerationEquipment[]
outfits OutfitEquipment[]
@@index([category, subCategory])
@@map("equipments")
}
model Generation {
id String @id @default(ulid())
characterId String @map("character_id")
imageId String @map("image_id")
userPrompt String? @map("user_prompt")
pose String?
expression String?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
character Character @relation(fields: [characterId], references: [id])
image Asset @relation(fields: [imageId], references: [id])
equipments GenerationEquipment[]
@@map("generations")
}
model GenerationEquipment {
generationId String @map("generation_id")
equipmentId String @map("equipment_id")
generation Generation @relation(fields: [generationId], references: [id])
equipment Equipment @relation(fields: [equipmentId], references: [id])
@@id([generationId, equipmentId])
@@map("generation_equipments")
}
model Outfit {
id String @id @default(ulid())
name String
prompt String?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
equipments OutfitEquipment[]
@@map("outfits")
}
model OutfitEquipment {
outfitId String @map("outfit_id")
equipmentId String @map("equipment_id")
outfit Outfit @relation(fields: [outfitId], references: [id], onDelete: Cascade)
equipment Equipment @relation(fields: [equipmentId], references: [id], onDelete: Cascade)
@@id([outfitId, equipmentId])
@@map("outfit_equipments")
}
model Setting {
key String @id
value String
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("settings")
}
model Pose {
id String @id @default(ulid())
name String
imageId String @map("image_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
image Asset @relation(fields: [imageId], references: [id])
@@map("poses")
}
model Expression {
id String @id @default(ulid())
name String
imageId String @map("image_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
// Relations
image Asset @relation(fields: [imageId], references: [id])
@@map("expressions")
}