Add image upload function

This commit is contained in:
2025-06-26 21:21:52 +02:00
parent d608267a62
commit 0ccc01fb97
28 changed files with 4523 additions and 26 deletions

View File

@ -19,8 +19,8 @@ model Gallery {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
slug String @unique
name String
description String?
@ -45,7 +45,7 @@ model Album {
// coverImage Image? @relation("AlbumCoverImage", fields: [coverImageId], references: [id])
gallery Gallery? @relation(fields: [galleryId], references: [id])
// images Image[]
images Image[]
}
model Artist {
@ -53,16 +53,13 @@ model Artist {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
displayName String
slug String @unique
displayName String
nickname String?
// mentionUrl String?
// contact String?
// urls String[]
socials Social[]
// images Image[]
images Image[]
}
model Social {
@ -70,8 +67,8 @@ model Social {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
platform String
handle String
platform String
isPrimary Boolean
link String?
@ -79,3 +76,190 @@ model Social {
artistId String?
artist Artist? @relation(fields: [artistId], references: [id])
}
model Image {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
fileKey String
imageName String
originalFile String
uploadDate DateTime @default(now())
altText String?
description String?
fileType String?
imageData String?
creationMonth Int?
creationYear Int?
fileSize Int?
creationDate DateTime?
albumId String?
artistId String?
album Album? @relation(fields: [albumId], references: [id])
artist Artist? @relation(fields: [artistId], references: [id])
// sourceId String?
// source Source? @relation(fields: [sourceId], references: [id])
colors ImageColor[]
extractColors ExtractColor[]
metadata ImageMetadata[]
pixels PixelSummary[]
stats ImageStats[]
theme ThemeSeed[]
variants ImageVariant[]
// colors ImageColor[]
// extractColors ExtractColor[]
//
// albumCover Album[] @relation("AlbumCoverImage")
// categories Category[] @relation("ImageCategories")
// galleryCover Gallery[] @relation("GalleryCoverImage")
palettes ColorPalette[] @relation("ImagePalettes")
// tags Tag[] @relation("ImageTags")
}
model ImageMetadata {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageId String
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 Image @relation(fields: [imageId], references: [id])
}
model ImageStats {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageId String
entropy Float
sharpness Float
dominantB Int
dominantG Int
dominantR Int
isOpaque Boolean
image Image @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 Image @relation(fields: [imageId], references: [id])
}
model ColorPalette {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String?
type String?
items ColorPaletteItem[]
images Image[] @relation("ImagePalettes")
}
model ColorPaletteItem {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
tone Int?
hex String?
colorPaletteId String?
colorPalette ColorPalette? @relation(fields: [colorPaletteId], references: [id])
}
model ExtractColor {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
hex String
imageId String
blue Int
green Int
red Int
// isLight Boolean
area Float?
hue Float?
saturation Float?
// value Float?
image Image @relation(fields: [imageId], references: [id])
}
model ImageColor {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageId String
type String
hex String?
blue Int?
green Int?
red Int?
image Image @relation(fields: [imageId], references: [id])
}
model ThemeSeed {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageId String
seedHex String
image Image @relation(fields: [imageId], references: [id])
}
model PixelSummary {
id String @id @default(cuid())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
imageId String
channels Int
height Int
width Int
image Image @relation(fields: [imageId], references: [id])
}