- localization-svc: defaultLocale ru, resolveLocale only by geo - web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru - countryToLocale: default ru when no country or unknown country Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.2 KiB
SQL
37 lines
1.2 KiB
SQL
CREATE TABLE IF NOT EXISTS billing_plans (
|
|
id VARCHAR(32) PRIMARY KEY,
|
|
name VARCHAR(64) NOT NULL,
|
|
price_monthly INTEGER NOT NULL DEFAULT 0,
|
|
price_yearly INTEGER NOT NULL DEFAULT 0,
|
|
currency VARCHAR(3) NOT NULL DEFAULT 'RUB',
|
|
features JSONB DEFAULT '[]'::jsonb,
|
|
limits JSONB DEFAULT '{}'::jsonb
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS billing_subscriptions (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
status VARCHAR(24) NOT NULL DEFAULT 'active',
|
|
period VARCHAR(8) NOT NULL DEFAULT 'monthly',
|
|
started_at TIMESTAMP DEFAULT NOW() NOT NULL,
|
|
expires_at TIMESTAMP,
|
|
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
|
|
updated_at TIMESTAMP DEFAULT NOW() NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS billing_payments (
|
|
id TEXT PRIMARY KEY,
|
|
user_id TEXT NOT NULL,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
amount INTEGER NOT NULL,
|
|
currency VARCHAR(3) NOT NULL DEFAULT 'RUB',
|
|
status VARCHAR(24) NOT NULL DEFAULT 'pending',
|
|
yookassa_id TEXT,
|
|
period VARCHAR(8) NOT NULL DEFAULT 'monthly',
|
|
created_at TIMESTAMP DEFAULT NOW() NOT NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_billing_subscriptions_user_id ON billing_subscriptions(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_billing_payments_user_id ON billing_payments(user_id);
|