75f3dd141c
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CI and Release / lint-frontend (push) Has been cancelled
CI and Release / dockerfile-scan (push) Has been cancelled
CI and Release / test-frontend (push) Has been cancelled
CI and Release / lint-verification-agent (push) Has been cancelled
CI and Release / test-verification-agent (push) Has been cancelled
CI and Release / e2e-verification-agent (push) Has been cancelled
CI and Release / test-backend (push) Has been cancelled
CI and Release / build-dev-image (push) Has been cancelled
CI and Release / push-dev-image (push) Has been cancelled
CI and Release / build-image (push) Has been cancelled
CI and Release / build-verification-image (push) Has been cancelled
CI and Release / determine-version (push) Has been cancelled
CI and Release / push-image (push) Has been cancelled
CI and Release / push-verification-image (12) (push) Has been cancelled
CI and Release / lint-backend (push) Has been cancelled
CI and Release / push-verification-image (17) (push) Has been cancelled
CI and Release / push-verification-image (18) (push) Has been cancelled
CI and Release / release (push) Has been cancelled
CI and Release / publish-helm-chart (push) Has been cancelled
CI and Release / push-verification-image (13) (push) Has been cancelled
CI and Release / push-verification-image (14) (push) Has been cancelled
CI and Release / push-verification-image (15) (push) Has been cancelled
CI and Release / push-verification-image (16) (push) Has been cancelled
110 lines
3.9 KiB
SQL
110 lines
3.9 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
|
|
DROP INDEX IF EXISTS idx_webhook_records_provider_event_id;
|
|
DROP TABLE IF EXISTS webhook_records;
|
|
|
|
DROP INDEX IF EXISTS idx_subscription_events_subscription_id;
|
|
ALTER TABLE subscription_events DROP CONSTRAINT IF EXISTS fk_subscription_events_subscription_id;
|
|
DROP TABLE IF EXISTS subscription_events;
|
|
|
|
DROP INDEX IF EXISTS idx_invoices_provider_invoice_id;
|
|
DROP INDEX IF EXISTS idx_invoices_subscription_id;
|
|
ALTER TABLE invoices DROP CONSTRAINT IF EXISTS fk_invoices_subscription_id;
|
|
DROP TABLE IF EXISTS invoices;
|
|
|
|
DROP INDEX IF EXISTS idx_subscriptions_provider_sub_id;
|
|
DROP INDEX IF EXISTS idx_subscriptions_status;
|
|
DROP INDEX IF EXISTS idx_subscriptions_database_id;
|
|
DROP TABLE IF EXISTS subscriptions;
|
|
|
|
ALTER TABLE storages
|
|
DROP COLUMN IF EXISTS is_system;
|
|
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
|
|
ALTER TABLE storages
|
|
ADD COLUMN is_system BOOLEAN NOT NULL DEFAULT FALSE;
|
|
|
|
CREATE TABLE subscriptions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
database_id UUID NOT NULL,
|
|
status TEXT NOT NULL,
|
|
storage_gb INT NOT NULL,
|
|
pending_storage_gb INT,
|
|
current_period_start TIMESTAMPTZ NOT NULL,
|
|
current_period_end TIMESTAMPTZ NOT NULL,
|
|
canceled_at TIMESTAMPTZ,
|
|
data_retention_grace_period_until TIMESTAMPTZ,
|
|
provider_name TEXT,
|
|
provider_sub_id TEXT,
|
|
provider_customer_id TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_subscriptions_database_id ON subscriptions (database_id);
|
|
CREATE INDEX idx_subscriptions_status ON subscriptions (status);
|
|
CREATE INDEX idx_subscriptions_provider_sub_id ON subscriptions (provider_sub_id);
|
|
|
|
CREATE TABLE invoices (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
subscription_id UUID NOT NULL,
|
|
provider_invoice_id TEXT NOT NULL,
|
|
amount_cents BIGINT NOT NULL,
|
|
storage_gb INT NOT NULL,
|
|
period_start TIMESTAMPTZ NOT NULL,
|
|
period_end TIMESTAMPTZ NOT NULL,
|
|
status TEXT NOT NULL,
|
|
paid_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
ALTER TABLE invoices
|
|
ADD CONSTRAINT fk_invoices_subscription_id
|
|
FOREIGN KEY (subscription_id)
|
|
REFERENCES subscriptions (id)
|
|
ON DELETE CASCADE;
|
|
|
|
CREATE INDEX idx_invoices_subscription_id ON invoices (subscription_id);
|
|
CREATE INDEX idx_invoices_provider_invoice_id ON invoices (provider_invoice_id);
|
|
|
|
CREATE TABLE subscription_events (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
subscription_id UUID NOT NULL,
|
|
provider_event_id TEXT,
|
|
type TEXT NOT NULL,
|
|
old_storage_gb INT,
|
|
new_storage_gb INT,
|
|
old_status TEXT,
|
|
new_status TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
ALTER TABLE subscription_events
|
|
ADD CONSTRAINT fk_subscription_events_subscription_id
|
|
FOREIGN KEY (subscription_id)
|
|
REFERENCES subscriptions (id)
|
|
ON DELETE CASCADE;
|
|
|
|
CREATE INDEX idx_subscription_events_subscription_id ON subscription_events (subscription_id);
|
|
|
|
CREATE TABLE webhook_records (
|
|
request_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
provider_name TEXT NOT NULL,
|
|
event_type TEXT NOT NULL,
|
|
provider_event_id TEXT NOT NULL,
|
|
raw_payload TEXT NOT NULL,
|
|
processed_at TIMESTAMPTZ,
|
|
error TEXT,
|
|
is_skipped BOOLEAN NOT NULL DEFAULT FALSE,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_webhook_records_provider_event_id ON webhook_records (provider_event_id);
|
|
|
|
-- +goose StatementEnd
|