@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varaos/db",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "private": false,
5
5
  "main": "index.js",
6
6
  "files": [
@@ -0,0 +1,2 @@
1
+ -- AlterEnum
2
+ ALTER TYPE "public"."Status" ADD VALUE 'disconnected';
@@ -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;
@@ -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
+ }