压平数据库初始化迁移

This commit is contained in:
yml2213
2026-07-31 17:19:29 +08:00
parent 04130e5ec8
commit 4ae9ef53ff
6 changed files with 19 additions and 55 deletions
@@ -95,6 +95,17 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_api_nonce ON api_request_nonces (api_clien
CREATE INDEX IF NOT EXISTS idx_api_request_nonces_api_client_id ON api_request_nonces (api_client_id);
CREATE INDEX IF NOT EXISTS idx_api_request_nonces_expires_at ON api_request_nonces (expires_at);
CREATE TABLE IF NOT EXISTS source_api_nonces (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ,
api_key VARCHAR(96) NOT NULL,
nonce VARCHAR(64) NOT NULL,
expires_at TIMESTAMPTZ NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_source_api_nonce ON source_api_nonces (api_key, nonce);
CREATE INDEX IF NOT EXISTS idx_source_api_nonces_expires_at ON source_api_nonces (expires_at);
-- ----------------------------------------------------------------------------
-- 商品目录与商户可售商品
-- ----------------------------------------------------------------------------
@@ -179,7 +190,7 @@ CREATE INDEX IF NOT EXISTS idx_wallet_ledger_entries_type ON wallet_ledger_entri
CREATE INDEX IF NOT EXISTS idx_wallet_ledger_entries_reference_no ON wallet_ledger_entries (reference_no);
-- ----------------------------------------------------------------------------
-- 履约订单与任务
-- 履约订单
-- ----------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS fulfillment_orders (
@@ -203,12 +214,15 @@ CREATE TABLE IF NOT EXISTS fulfillment_orders (
currency VARCHAR(12) NOT NULL DEFAULT 'POINT',
order_status VARCHAR(16) NOT NULL DEFAULT 'paid',
buyer_reference VARCHAR(128),
request_fingerprint VARCHAR(64) NOT NULL DEFAULT '',
request_data TEXT,
result_data TEXT,
provider_order_no VARCHAR(96),
failure_reason VARCHAR(512),
cancelled_at TIMESTAMPTZ,
delivered_at TIMESTAMPTZ
delivered_at TIMESTAMPTZ,
delivery_link_expires_at TIMESTAMPTZ,
delivery_link_revoked_at TIMESTAMPTZ
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_fulfillment_orders_order_no ON fulfillment_orders (order_no);
@@ -217,28 +231,10 @@ CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_deleted_at ON fulfillment_orde
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_merchant_id ON fulfillment_orders (merchant_id);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_merchant_product_id ON fulfillment_orders (merchant_product_id);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_order_status ON fulfillment_orders (order_status);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_request_fingerprint ON fulfillment_orders (request_fingerprint);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_provider_order_no ON fulfillment_orders (provider_order_no);
CREATE TABLE IF NOT EXISTS fulfillment_jobs (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ,
merchant_id BIGINT NOT NULL,
order_id BIGINT NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'pending',
attempts BIGINT NOT NULL DEFAULT 0,
next_run_at TIMESTAMPTZ NOT NULL,
provider_order_no VARCHAR(96),
request_payload TEXT,
result_payload TEXT,
last_error VARCHAR(512)
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_fulfillment_jobs_order_id ON fulfillment_jobs (order_id);
CREATE INDEX IF NOT EXISTS idx_fulfillment_jobs_merchant_id ON fulfillment_jobs (merchant_id);
CREATE INDEX IF NOT EXISTS idx_fulfillment_jobs_status ON fulfillment_jobs (status);
CREATE INDEX IF NOT EXISTS idx_fulfillment_jobs_next_run_at ON fulfillment_jobs (next_run_at);
CREATE INDEX IF NOT EXISTS idx_fulfillment_jobs_provider_order_no ON fulfillment_jobs (provider_order_no);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_delivery_link_expires_at ON fulfillment_orders (delivery_link_expires_at);
CREATE INDEX IF NOT EXISTS idx_fulfillment_orders_delivery_link_revoked_at ON fulfillment_orders (delivery_link_revoked_at);
-- ----------------------------------------------------------------------------
-- 回调订阅与投递(事务性 outbox)