gitdataai/libs/migrate/sql/m20260509_000006_create_subscription.sql

31 lines
1.2 KiB
SQL

CREATE TABLE subscription (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- Who is subscribed: "user" or "project"
scope VARCHAR(20) NOT NULL,
scope_id UUID NOT NULL,
-- Subscription period
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
-- Payment info
order_id VARCHAR(100),
platform VARCHAR(50) NOT NULL,
plan_name VARCHAR(100),
-- Quotas
quota_6h DECIMAL(20, 4) DEFAULT 0 NOT NULL,
quota_6h_used DECIMAL(20, 4) DEFAULT 0 NOT NULL,
quota_6h_reset_at TIMESTAMPTZ,
quota_weekly DECIMAL(20, 4) DEFAULT 0 NOT NULL,
quota_weekly_used DECIMAL(20, 4) DEFAULT 0 NOT NULL,
quota_weekly_reset_at TIMESTAMPTZ,
quota_monthly DECIMAL(20, 4) DEFAULT 0 NOT NULL,
quota_monthly_used DECIMAL(20, 4) DEFAULT 0 NOT NULL,
-- Status
is_active BOOLEAN DEFAULT TRUE NOT NULL,
currency VARCHAR(10) DEFAULT 'USD' NOT NULL,
updated_at TIMESTAMPTZ DEFAULT NOW(),
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_subscription_scope ON subscription (scope, scope_id);
CREATE INDEX idx_subscription_active ON subscription (is_active) WHERE is_active = TRUE;
CREATE INDEX idx_subscription_end_at ON subscription (end_at) WHERE is_active = TRUE;