-- CreateTable CREATE TABLE "comments" ( "sid" INT GENERATED BY DEFAULT AS IDENTITY, "id" VARCHAR NOT NULL, "workspace_id" VARCHAR NOT NULL, "doc_id" VARCHAR NOT NULL, "user_id" VARCHAR NOT NULL, "content" JSONB NOT NULL, "created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" TIMESTAMPTZ(3), "resolved" BOOLEAN NOT NULL DEFAULT false, CONSTRAINT "comments_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "replies" ( "sid" INT GENERATED BY DEFAULT AS IDENTITY, "id" VARCHAR NOT NULL, "user_id" VARCHAR NOT NULL, "comment_id" VARCHAR NOT NULL, "workspace_id" VARCHAR NOT NULL, "doc_id" VARCHAR NOT NULL, "content" JSONB NOT NULL, "created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted_at" TIMESTAMPTZ(3), CONSTRAINT "replies_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "comments_sid_key" ON "comments"("sid"); -- CreateIndex CREATE INDEX "comments_workspace_id_doc_id_sid_idx" ON "comments"("workspace_id", "doc_id", "sid"); -- CreateIndex CREATE INDEX "comments_workspace_id_doc_id_updated_at_idx" ON "comments"("workspace_id", "doc_id", "updated_at"); -- CreateIndex CREATE INDEX "comments_user_id_idx" ON "comments"("user_id"); -- CreateIndex CREATE UNIQUE INDEX "replies_sid_key" ON "replies"("sid"); -- CreateIndex CREATE INDEX "replies_comment_id_sid_idx" ON "replies"("comment_id", "sid"); -- CreateIndex CREATE INDEX "replies_workspace_id_doc_id_updated_at_idx" ON "replies"("workspace_id", "doc_id", "updated_at"); -- CreateIndex CREATE INDEX "replies_user_id_idx" ON "replies"("user_id"); -- AddForeignKey ALTER TABLE "comments" ADD CONSTRAINT "comments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "comments" ADD CONSTRAINT "comments_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "replies" ADD CONSTRAINT "replies_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "replies" ADD CONSTRAINT "replies_comment_id_fkey" FOREIGN KEY ("comment_id") REFERENCES "comments"("id") ON DELETE CASCADE ON UPDATE CASCADE;