44 lines
2.3 KiB
SQL
44 lines
2.3 KiB
SQL
-- Success-sharing milestones. Run once against the target database before
|
|
-- deploying the application version that uses this feature.
|
|
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "xHandle" TEXT;
|
|
ALTER TABLE "User" ADD COLUMN IF NOT EXISTS "socialPromptOptOut" BOOLEAN NOT NULL DEFAULT false;
|
|
|
|
CREATE TABLE IF NOT EXISTS "SocialMilestone" (
|
|
"id" TEXT PRIMARY KEY,
|
|
"qrId" TEXT NOT NULL REFERENCES "QRCode"("id") ON DELETE CASCADE,
|
|
"userId" TEXT NOT NULL REFERENCES "User"("id") ON DELETE CASCADE,
|
|
"kind" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'detected',
|
|
"detectedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"shownAt" TIMESTAMP(3),
|
|
"respondedAt" TIMESTAMP(3),
|
|
"postedAt" TIMESTAMP(3),
|
|
"withName" BOOLEAN NOT NULL DEFAULT false,
|
|
"consentText" TEXT,
|
|
CONSTRAINT "SocialMilestone_qr_kind_key" UNIQUE ("qrId", "kind")
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "SocialMilestone_status_respondedAt_idx"
|
|
ON "SocialMilestone" ("status", "respondedAt");
|
|
CREATE INDEX IF NOT EXISTS "SocialMilestone_userId_status_idx"
|
|
ON "SocialMilestone" ("userId", "status");
|
|
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "claimedAt" TIMESTAMP(3);
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "language" TEXT NOT NULL DEFAULT 'en';
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "cardData" JSONB;
|
|
CREATE INDEX IF NOT EXISTS "SocialMilestone_status_claimedAt_idx"
|
|
ON "SocialMilestone" ("status", "claimedAt");
|
|
|
|
-- Version 2: independent brand and self-share state plus a consent-gated
|
|
-- unguessable URL for Open Graph previews. Execute manually once.
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "brandStatus" TEXT NOT NULL DEFAULT 'pending';
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "brandApprovedAt" TIMESTAMP(3);
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "brandPostedAt" TIMESTAMP(3);
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "brandPostUrl" TEXT;
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "brandPostError" TEXT;
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "selfSharedAt" TIMESTAMP(3);
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "shareToken" TEXT;
|
|
ALTER TABLE "SocialMilestone" ADD COLUMN IF NOT EXISTS "publicShareApprovedAt" TIMESTAMP(3);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS "SocialMilestone_shareToken_key"
|
|
ON "SocialMilestone" ("shareToken") WHERE "shareToken" IS NOT NULL;
|