-- AlterTable ALTER TABLE "users" ADD COLUMN "subs" TEXT[]; -- CreateTable CREATE TABLE "Subscription" ( "id" SERIAL NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "subName" CITEXT NOT NULL, "userId" INTEGER NOT NULL, PRIMARY KEY ("id") ); -- AddForeignKey ALTER TABLE "Subscription" ADD FOREIGN KEY ("subName") REFERENCES "Sub"("name") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Subscription" ADD FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- create the nostr sub ignoring conflicts INSERT INTO "Sub" ("name", "desc", "postTypes", "rankingType") VALUES ('nostr', 'everything nostr related', '{LINK,DISCUSSION,POLL,BOUNTY}', 'WOT') ON CONFLICT DO NOTHING; -- create bitcoin sub ignoring conflicts INSERT INTO "Sub" ("name", "desc", "postTypes", "rankingType") VALUES ('bitcoin', 'everything bitcoin related', '{LINK,DISCUSSION,POLL,BOUNTY}', 'WOT') ON CONFLICT DO NOTHING; -- all root items with null subName put in bitcoin sub ... unless title has nostr in it UPDATE "Item" SET "subName" = 'bitcoin' WHERE "Item"."subName" IS NULL AND "Item"."parentId" IS NULL AND "Item".title NOT ILIKE '%nostr%'; UPDATE "Item" SET "subName" = 'nostr' WHERE "Item"."subName" IS NULL AND "Item"."parentId" IS NULL AND "Item".title ILIKE '%nostr%';