enables schema saving in db, initial refactor of db schema for revisions

This commit is contained in:
2024-09-02 03:16:10 -06:00
parent fd5e5bcc8b
commit 5b16cc60f7
9 changed files with 190 additions and 122 deletions

View File

@@ -1,9 +1,3 @@
// 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"
}
@@ -31,24 +25,53 @@ model Schema {
author User @relation(fields: [authorId], references: [id])
authorId String
originalId String?
name String
schema Json
types Json
version Int
name String
SchemaRevision SchemaRevision[]
}
model SchemaRevision {
id String @id @default(cuid())
schemaId String
parentSchema Schema @relation(fields: [schemaId], references: [id])
schema Json
types Json
version Int
Publication Publication[]
@@unique([schemaId, version])
}
model Publication {
id String @id @default(cuid())
schema Schema @relation(fields: [schemaId], references: [id])
schemaId String
tags Tag[]
author User @relation(fields: [authorId], references: [id])
authorId String
id String @id @default(cuid())
schema Schema @relation(fields: [schemaId], references: [id])
schemaId String
schemaVersion Int
schemaRevision SchemaRevision @relation(fields: [schemaVersion, schemaId], references: [version, schemaId])
tags Tag[]
name String
data Json
TagsOnPublications TagsOnPublications[]
name String
TagsOnPublications TagsOnPublications[]
PublicationRevision PublicationRevision[]
}
model PublicationRevision {
id String @id @default(cuid())
version String
isFinal Boolean
data Json
previousId String?
publicationId String
publication Publication @relation(fields: [publicationId], references: [id])
previousRevision PublicationRevision? @relation(name: "downlineRevisions", fields: [previousId], references: [id])
downlineRevisions PublicationRevision[] @relation("downlineRevisions")
author User @relation(fields: [authorId], references: [id])
authorId String
@@unique([publicationId, version])
}
model TagsOnPublications {
@@ -80,10 +103,9 @@ model TagsOnTags {
}
model User {
id String @id @default(cuid())
schemas Schema[]
gameSystems GameSystem[]
publications Publication[]
id String @id @default(cuid())
schemas Schema[]
gameSystems GameSystem[]
name String?
username String? @unique
@@ -94,8 +116,9 @@ model User {
accounts Account[]
sessions Session[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
PublicationRevision PublicationRevision[]
}
model Account {