159 lines
4.2 KiB
Markdown
159 lines
4.2 KiB
Markdown
# Migration `20201101183848-db-init`
|
|
|
|
This migration has been generated by Kurt Hutten at 11/2/2020, 5:38:48 AM.
|
|
You can check out the [state of the schema](./schema.prisma) after the migration.
|
|
|
|
## Database Steps
|
|
|
|
```sql
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"userName" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
"image" TEXT,
|
|
"bio" TEXT,
|
|
PRIMARY KEY ("id")
|
|
)
|
|
|
|
CREATE TABLE "Part" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"code" TEXT,
|
|
"mainImage" TEXT,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
|
|
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
PRIMARY KEY ("id")
|
|
)
|
|
|
|
CREATE TABLE "PartReaction" (
|
|
"id" TEXT NOT NULL,
|
|
"emote" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"partId" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
|
|
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
PRIMARY KEY ("id")
|
|
)
|
|
|
|
CREATE TABLE "Comment" (
|
|
"id" TEXT NOT NULL,
|
|
"text" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"partId" TEXT NOT NULL,
|
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" DATETIME NOT NULL,
|
|
|
|
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
PRIMARY KEY ("id")
|
|
)
|
|
|
|
CREATE UNIQUE INDEX "User.userName_unique" ON "User"("userName")
|
|
|
|
CREATE UNIQUE INDEX "User.email_unique" ON "User"("email")
|
|
|
|
CREATE UNIQUE INDEX "Part.title_userId_unique" ON "Part"("title", "userId")
|
|
|
|
CREATE UNIQUE INDEX "PartReaction.emote_userId_partId_unique" ON "PartReaction"("emote", "userId", "partId")
|
|
```
|
|
|
|
## Changes
|
|
|
|
```diff
|
|
diff --git schema.prisma schema.prisma
|
|
migration ..20201101183848-db-init
|
|
--- datamodel.dml
|
|
+++ datamodel.dml
|
|
@@ -1,0 +1,79 @@
|
|
+datasource DS {
|
|
+ provider = ["sqlite", "postgresql"]
|
|
+ url = "***"
|
|
+}
|
|
+
|
|
+generator client {
|
|
+ provider = "prisma-client-js"
|
|
+ binaryTargets = "native"
|
|
+}
|
|
+
|
|
+// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode
|
|
+// enum Role {
|
|
+// USER
|
|
+// ADMIN
|
|
+// }
|
|
+
|
|
+// enum PartType {
|
|
+// CASCADESTUDIO
|
|
+// JSCAD
|
|
+// }
|
|
+
|
|
+model User {
|
|
+ id String @id @default(uuid())
|
|
+ userName String @unique // reffered to as userId in @relations
|
|
+ email String @unique
|
|
+ // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev
|
|
+ // maybe let netlify handle roles for now.
|
|
+ // role String @default("user")
|
|
+
|
|
+ createdAt DateTime @default(now())
|
|
+ updatedAt DateTime @updatedAt
|
|
+
|
|
+ image String? // url maybe id or file storage service? cloudinary?
|
|
+ bio String? //mark down
|
|
+ Part Part[]
|
|
+ Reaction PartReaction[]
|
|
+ Comment Comment[]
|
|
+}
|
|
+
|
|
+model Part {
|
|
+ id String @id @default(uuid())
|
|
+ title String
|
|
+ description String? // markdown string
|
|
+ code String?
|
|
+ mainImage String? // link to cloudinary
|
|
+ createdAt DateTime @default(now())
|
|
+ updatedAt DateTime @updatedAt
|
|
+ user User @relation(fields: [userId], references: [id])
|
|
+ userId String
|
|
+
|
|
+ Comment Comment[]
|
|
+ Reaction PartReaction[]
|
|
+ @@unique([title, userId])
|
|
+}
|
|
+
|
|
+model PartReaction {
|
|
+ id String @id @default(uuid())
|
|
+ emote String // an emoji
|
|
+ user User @relation(fields: [userId], references: [id])
|
|
+ userId String
|
|
+ part Part @relation(fields: [partId], references: [id])
|
|
+ partId String
|
|
+
|
|
+ createdAt DateTime @default(now())
|
|
+ updatedAt DateTime @updatedAt
|
|
+ @@unique([emote, userId, partId])
|
|
+}
|
|
+
|
|
+model Comment {
|
|
+ id String @id @default(uuid())
|
|
+ text String // the comment, should I allow mark down?
|
|
+ user User @relation(fields: [userId], references: [id])
|
|
+ userId String
|
|
+ part Part @relation(fields: [partId], references: [id])
|
|
+ partId String
|
|
+
|
|
+ createdAt DateTime @default(now())
|
|
+ updatedAt DateTime @updatedAt
|
|
+}
|
|
```
|
|
|
|
|