89 lines
3.3 KiB
SQL
89 lines
3.3 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE DATABASE IF NOT EXISTS hyapp_wallet DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE hyapp_wallet;
|
|
|
|
CREATE TABLE IF NOT EXISTS wallet_accounts (
|
|
user_id BIGINT NOT NULL,
|
|
asset_type VARCHAR(32) NOT NULL,
|
|
available_amount BIGINT NOT NULL,
|
|
frozen_amount BIGINT NOT NULL,
|
|
version BIGINT NOT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (user_id, asset_type)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS wallet_transactions (
|
|
transaction_id VARCHAR(96) NOT NULL PRIMARY KEY,
|
|
command_id VARCHAR(128) NOT NULL,
|
|
biz_type VARCHAR(64) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
request_hash VARCHAR(128) NOT NULL,
|
|
external_ref VARCHAR(128) NOT NULL DEFAULT '',
|
|
metadata_json JSON NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
UNIQUE KEY uk_wallet_tx_command (command_id),
|
|
KEY idx_wallet_tx_biz_time (biz_type, created_at_ms),
|
|
KEY idx_wallet_tx_external_ref (external_ref)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS wallet_entries (
|
|
entry_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
transaction_id VARCHAR(96) NOT NULL,
|
|
user_id BIGINT NOT NULL,
|
|
asset_type VARCHAR(32) NOT NULL,
|
|
available_delta BIGINT NOT NULL,
|
|
frozen_delta BIGINT NOT NULL,
|
|
available_after BIGINT NOT NULL,
|
|
frozen_after BIGINT NOT NULL,
|
|
counterparty_user_id BIGINT NOT NULL DEFAULT 0,
|
|
room_id VARCHAR(96) NOT NULL DEFAULT '',
|
|
created_at_ms BIGINT NOT NULL,
|
|
KEY idx_wallet_entries_user_time (user_id, created_at_ms),
|
|
KEY idx_wallet_entries_tx (transaction_id),
|
|
KEY idx_wallet_entries_asset_time (asset_type, created_at_ms)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS wallet_outbox (
|
|
event_id VARCHAR(128) NOT NULL PRIMARY KEY,
|
|
event_type VARCHAR(64) NOT NULL,
|
|
transaction_id VARCHAR(96) NOT NULL,
|
|
command_id VARCHAR(128) NOT NULL,
|
|
user_id BIGINT NOT NULL,
|
|
asset_type VARCHAR(32) NOT NULL,
|
|
available_delta BIGINT NOT NULL,
|
|
frozen_delta BIGINT NOT NULL,
|
|
payload JSON NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
retry_count INT NOT NULL DEFAULT 0,
|
|
last_error TEXT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
KEY idx_wallet_outbox_pending (status, created_at_ms),
|
|
KEY idx_wallet_outbox_tx (transaction_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS wallet_gift_prices (
|
|
gift_id VARCHAR(96) NOT NULL,
|
|
price_version VARCHAR(64) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
coin_price BIGINT NOT NULL,
|
|
gift_point_amount BIGINT NOT NULL,
|
|
heat_value BIGINT NOT NULL,
|
|
effective_at_ms BIGINT NOT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (gift_id, price_version),
|
|
KEY idx_wallet_gift_prices_effective (gift_id, status, effective_at_ms)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
INSERT IGNORE INTO wallet_gift_prices (
|
|
gift_id, price_version, status, coin_price, gift_point_amount, heat_value,
|
|
effective_at_ms, created_at_ms, updated_at_ms
|
|
) VALUES
|
|
('rose', 'v1', 'active', 10, 10, 10, 0, 0, 0),
|
|
('rocket', 'v1', 'active', 100, 100, 100, 0, 0, 0);
|