feat(media): scaffold mvp1 media and portfolio foundation
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
provider = "prisma-client"
|
||||
output = "./generated/client"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
@@ -95,3 +96,159 @@ model SystemSetting {
|
||||
|
||||
@@map("system_setting")
|
||||
}
|
||||
|
||||
model MediaAsset {
|
||||
id String @id @default(uuid())
|
||||
type String
|
||||
title String
|
||||
description String?
|
||||
altText String?
|
||||
source String?
|
||||
copyright String?
|
||||
author String?
|
||||
tags String[]
|
||||
storageKey String? @unique
|
||||
mimeType String?
|
||||
width Int?
|
||||
height Int?
|
||||
sizeBytes Int?
|
||||
isPublished Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artworkLinks ArtworkRendition[]
|
||||
|
||||
@@index([type])
|
||||
@@index([isPublished])
|
||||
}
|
||||
|
||||
model Artwork {
|
||||
id String @id @default(uuid())
|
||||
title String
|
||||
slug String @unique
|
||||
description String?
|
||||
medium String?
|
||||
dimensions String?
|
||||
year Int?
|
||||
framing String?
|
||||
availability String?
|
||||
isPublished Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
renditions ArtworkRendition[]
|
||||
galleryLinks ArtworkGallery[]
|
||||
albumLinks ArtworkAlbum[]
|
||||
categoryLinks ArtworkCategory[]
|
||||
tagLinks ArtworkTag[]
|
||||
|
||||
@@index([isPublished])
|
||||
}
|
||||
|
||||
model ArtworkRendition {
|
||||
id String @id @default(uuid())
|
||||
artworkId String
|
||||
mediaAssetId String
|
||||
slot String
|
||||
width Int?
|
||||
height Int?
|
||||
isPrimary Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artwork Artwork @relation(fields: [artworkId], references: [id], onDelete: Cascade)
|
||||
mediaAsset MediaAsset @relation(fields: [mediaAssetId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([artworkId, slot])
|
||||
@@index([mediaAssetId])
|
||||
}
|
||||
|
||||
model Gallery {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
slug String @unique
|
||||
description String?
|
||||
sortOrder Int @default(0)
|
||||
isVisible Boolean @default(true)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artworkLinks ArtworkGallery[]
|
||||
}
|
||||
|
||||
model Album {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
slug String @unique
|
||||
description String?
|
||||
sortOrder Int @default(0)
|
||||
isVisible Boolean @default(true)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artworkLinks ArtworkAlbum[]
|
||||
}
|
||||
|
||||
model Category {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
slug String @unique
|
||||
description String?
|
||||
sortOrder Int @default(0)
|
||||
isVisible Boolean @default(true)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artworkLinks ArtworkCategory[]
|
||||
}
|
||||
|
||||
model Tag {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
slug String @unique
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
artworkLinks ArtworkTag[]
|
||||
}
|
||||
|
||||
model ArtworkGallery {
|
||||
id String @id @default(uuid())
|
||||
artworkId String
|
||||
galleryId String
|
||||
createdAt DateTime @default(now())
|
||||
artwork Artwork @relation(fields: [artworkId], references: [id], onDelete: Cascade)
|
||||
gallery Gallery @relation(fields: [galleryId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([artworkId, galleryId])
|
||||
@@index([galleryId])
|
||||
}
|
||||
|
||||
model ArtworkAlbum {
|
||||
id String @id @default(uuid())
|
||||
artworkId String
|
||||
albumId String
|
||||
createdAt DateTime @default(now())
|
||||
artwork Artwork @relation(fields: [artworkId], references: [id], onDelete: Cascade)
|
||||
album Album @relation(fields: [albumId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([artworkId, albumId])
|
||||
@@index([albumId])
|
||||
}
|
||||
|
||||
model ArtworkCategory {
|
||||
id String @id @default(uuid())
|
||||
artworkId String
|
||||
categoryId String
|
||||
createdAt DateTime @default(now())
|
||||
artwork Artwork @relation(fields: [artworkId], references: [id], onDelete: Cascade)
|
||||
category Category @relation(fields: [categoryId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([artworkId, categoryId])
|
||||
@@index([categoryId])
|
||||
}
|
||||
|
||||
model ArtworkTag {
|
||||
id String @id @default(uuid())
|
||||
artworkId String
|
||||
tagId String
|
||||
createdAt DateTime @default(now())
|
||||
artwork Artwork @relation(fields: [artworkId], references: [id], onDelete: Cascade)
|
||||
tag Tag @relation(fields: [tagId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([artworkId, tagId])
|
||||
@@index([tagId])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user