@varaos/db 1.1.8 → 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
|
@@ -29,6 +29,7 @@ enum Status {
|
|
|
29
29
|
pending_review // Awaiting manual or automated approval
|
|
30
30
|
deprecated // Old but still accessible for legacy users
|
|
31
31
|
archived // Hidden from new users, preserved for history
|
|
32
|
+
disconnected
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
enum Plan {
|
|
@@ -45,6 +46,12 @@ enum MessageRole {
|
|
|
45
46
|
moderator
|
|
46
47
|
}
|
|
47
48
|
|
|
49
|
+
enum PostType {
|
|
50
|
+
BLOG
|
|
51
|
+
ANNOUNCEMENT
|
|
52
|
+
SESSION
|
|
53
|
+
}
|
|
54
|
+
|
|
48
55
|
/// ─────────────────────────────────────────────
|
|
49
56
|
/// USERS & AUTH
|
|
50
57
|
/// ─────────────────────────────────────────────
|
|
@@ -86,6 +93,7 @@ model User {
|
|
|
86
93
|
|
|
87
94
|
createdAt DateTime @default(now())
|
|
88
95
|
updatedAt DateTime @updatedAt
|
|
96
|
+
posts Post[]
|
|
89
97
|
|
|
90
98
|
@@index([status])
|
|
91
99
|
}
|
|
@@ -618,3 +626,51 @@ model EmailSendLog {
|
|
|
618
626
|
|
|
619
627
|
campaign EmailCampaign @relation(fields: [campaignId], references: [id])
|
|
620
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
|
+
}
|