@varaos/db 1.1.9 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "public"."PostType" AS ENUM ('BLOG', 'ANNOUNCEMENT', 'SESSION');
|
|
3
|
+
|
|
4
|
+
-- CreateTable
|
|
5
|
+
CREATE TABLE "public"."Post" (
|
|
6
|
+
"id" TEXT NOT NULL,
|
|
7
|
+
"title" TEXT NOT NULL,
|
|
8
|
+
"slug" TEXT NOT NULL,
|
|
9
|
+
"excerpt" TEXT,
|
|
10
|
+
"type" "public"."PostType" NOT NULL DEFAULT 'BLOG',
|
|
11
|
+
"status" "public"."Status" NOT NULL DEFAULT 'draft',
|
|
12
|
+
"content" JSONB NOT NULL,
|
|
13
|
+
"contentHtml" TEXT,
|
|
14
|
+
"featuredImage" TEXT,
|
|
15
|
+
"authorId" TEXT,
|
|
16
|
+
"publishedAt" TIMESTAMP(3),
|
|
17
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
18
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
19
|
+
|
|
20
|
+
CONSTRAINT "Post_pkey" PRIMARY KEY ("id")
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
-- CreateTable
|
|
24
|
+
CREATE TABLE "public"."Tag" (
|
|
25
|
+
"id" TEXT NOT NULL,
|
|
26
|
+
"name" TEXT NOT NULL,
|
|
27
|
+
|
|
28
|
+
CONSTRAINT "Tag_pkey" PRIMARY KEY ("id")
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
-- CreateTable
|
|
32
|
+
CREATE TABLE "public"."PostTag" (
|
|
33
|
+
"postId" TEXT NOT NULL,
|
|
34
|
+
"tagId" TEXT NOT NULL,
|
|
35
|
+
|
|
36
|
+
CONSTRAINT "PostTag_pkey" PRIMARY KEY ("postId","tagId")
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
-- CreateIndex
|
|
40
|
+
CREATE UNIQUE INDEX "Post_slug_key" ON "public"."Post"("slug");
|
|
41
|
+
|
|
42
|
+
-- CreateIndex
|
|
43
|
+
CREATE INDEX "Post_type_idx" ON "public"."Post"("type");
|
|
44
|
+
|
|
45
|
+
-- CreateIndex
|
|
46
|
+
CREATE INDEX "Post_status_idx" ON "public"."Post"("status");
|
|
47
|
+
|
|
48
|
+
-- CreateIndex
|
|
49
|
+
CREATE INDEX "Post_publishedAt_idx" ON "public"."Post"("publishedAt");
|
|
50
|
+
|
|
51
|
+
-- CreateIndex
|
|
52
|
+
CREATE UNIQUE INDEX "Tag_name_key" ON "public"."Tag"("name");
|
|
53
|
+
|
|
54
|
+
-- CreateIndex
|
|
55
|
+
CREATE INDEX "PostTag_tagId_idx" ON "public"."PostTag"("tagId");
|
|
56
|
+
|
|
57
|
+
-- AddForeignKey
|
|
58
|
+
ALTER TABLE "public"."Post" ADD CONSTRAINT "Post_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "public"."User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
59
|
+
|
|
60
|
+
-- AddForeignKey
|
|
61
|
+
ALTER TABLE "public"."PostTag" ADD CONSTRAINT "PostTag_postId_fkey" FOREIGN KEY ("postId") REFERENCES "public"."Post"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
62
|
+
|
|
63
|
+
-- AddForeignKey
|
|
64
|
+
ALTER TABLE "public"."PostTag" ADD CONSTRAINT "PostTag_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "public"."Tag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
package/prisma/schema.prisma
CHANGED
|
@@ -46,6 +46,12 @@ enum MessageRole {
|
|
|
46
46
|
moderator
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
enum PostType {
|
|
50
|
+
BLOG
|
|
51
|
+
ANNOUNCEMENT
|
|
52
|
+
SESSION
|
|
53
|
+
}
|
|
54
|
+
|
|
49
55
|
/// ─────────────────────────────────────────────
|
|
50
56
|
/// USERS & AUTH
|
|
51
57
|
/// ─────────────────────────────────────────────
|
|
@@ -87,6 +93,7 @@ model User {
|
|
|
87
93
|
|
|
88
94
|
createdAt DateTime @default(now())
|
|
89
95
|
updatedAt DateTime @updatedAt
|
|
96
|
+
posts Post[]
|
|
90
97
|
|
|
91
98
|
@@index([status])
|
|
92
99
|
}
|
|
@@ -619,3 +626,51 @@ model EmailSendLog {
|
|
|
619
626
|
|
|
620
627
|
campaign EmailCampaign @relation(fields: [campaignId], references: [id])
|
|
621
628
|
}
|
|
629
|
+
|
|
630
|
+
model Post {
|
|
631
|
+
id String @id @default(uuid())
|
|
632
|
+
title String
|
|
633
|
+
slug String @unique
|
|
634
|
+
excerpt String?
|
|
635
|
+
type PostType @default(BLOG)
|
|
636
|
+
status Status @default(draft)
|
|
637
|
+
|
|
638
|
+
content Json
|
|
639
|
+
contentHtml String?
|
|
640
|
+
|
|
641
|
+
featuredImage String?
|
|
642
|
+
|
|
643
|
+
// many-to-many pivot
|
|
644
|
+
tags PostTag[] @relation("PostTags")
|
|
645
|
+
|
|
646
|
+
authorId String?
|
|
647
|
+
author User? @relation(fields: [authorId], references: [id])
|
|
648
|
+
|
|
649
|
+
publishedAt DateTime?
|
|
650
|
+
createdAt DateTime @default(now())
|
|
651
|
+
updatedAt DateTime @updatedAt
|
|
652
|
+
|
|
653
|
+
@@index([type])
|
|
654
|
+
@@index([status])
|
|
655
|
+
@@index([publishedAt])
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
model Tag {
|
|
659
|
+
id String @id @default(uuid())
|
|
660
|
+
name String @unique
|
|
661
|
+
|
|
662
|
+
// inverse many-to-many pivot
|
|
663
|
+
posts PostTag[] @relation("PostTags")
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
model PostTag {
|
|
667
|
+
postId String
|
|
668
|
+
tagId String
|
|
669
|
+
|
|
670
|
+
// Add relation names
|
|
671
|
+
post Post @relation("PostTags", fields: [postId], references: [id], onDelete: Cascade)
|
|
672
|
+
tag Tag @relation("PostTags", fields: [tagId], references: [id], onDelete: Cascade)
|
|
673
|
+
|
|
674
|
+
@@id([postId, tagId])
|
|
675
|
+
@@index([tagId])
|
|
676
|
+
}
|