Add subscription foundation
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
CREATE TYPE "SubscriptionStatus" AS ENUM ('TRIAL', 'ACTIVE', 'PAST_DUE', 'CANCELLED', 'EXPIRED');
|
||||
CREATE TYPE "SubscriptionPlan" AS ENUM ('FREE', 'PRO');
|
||||
CREATE TYPE "BillingProvider" AS ENUM ('PADDLE');
|
||||
|
||||
CREATE TABLE "user_subscriptions" (
|
||||
"id" UUID NOT NULL,
|
||||
"user_id" UUID NOT NULL,
|
||||
"provider" "BillingProvider" NOT NULL,
|
||||
"provider_customer_id" TEXT,
|
||||
"provider_subscription_id" TEXT,
|
||||
"plan" "SubscriptionPlan" NOT NULL,
|
||||
"status" "SubscriptionStatus" NOT NULL,
|
||||
"current_period_start" TIMESTAMP(3) NOT NULL,
|
||||
"current_period_end" TIMESTAMP(3) NOT NULL,
|
||||
"cancel_at_period_end" BOOLEAN NOT NULL DEFAULT false,
|
||||
"cancelled_at" TIMESTAMP(3),
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
CONSTRAINT "user_subscriptions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "user_subscriptions_user_id_key"
|
||||
ON "user_subscriptions"("user_id");
|
||||
|
||||
CREATE UNIQUE INDEX "user_subscriptions_provider_customer_id_key"
|
||||
ON "user_subscriptions"("provider_customer_id");
|
||||
|
||||
CREATE UNIQUE INDEX "user_subscriptions_provider_subscription_id_key"
|
||||
ON "user_subscriptions"("provider_subscription_id");
|
||||
|
||||
CREATE TABLE "user_entitlements" (
|
||||
"id" UUID NOT NULL,
|
||||
"user_id" UUID NOT NULL,
|
||||
"entitlement_key" TEXT NOT NULL,
|
||||
"granted" BOOLEAN NOT NULL DEFAULT false,
|
||||
"source" TEXT NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
CONSTRAINT "user_entitlements_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "user_entitlements_user_id_entitlement_key_key"
|
||||
ON "user_entitlements"("user_id", "entitlement_key");
|
||||
|
||||
ALTER TABLE "user_subscriptions"
|
||||
ADD CONSTRAINT "user_subscriptions_user_id_fkey"
|
||||
FOREIGN KEY ("user_id") REFERENCES "users"("id")
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "user_entitlements"
|
||||
ADD CONSTRAINT "user_entitlements_user_id_fkey"
|
||||
FOREIGN KEY ("user_id") REFERENCES "users"("id")
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE CASCADE;
|
||||
Reference in New Issue
Block a user