hyapp-server/deploy/mysql/initdb/007_resource_group_wallet_asset_items.sql
2026-05-02 13:02:38 +08:00

54 lines
1.9 KiB
SQL

USE hyapp_wallet;
DROP PROCEDURE IF EXISTS migrate_resource_group_wallet_asset_items;
DELIMITER $$
CREATE PROCEDURE migrate_resource_group_wallet_asset_items()
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'resource_group_items' AND COLUMN_NAME = 'item_type'
) THEN
ALTER TABLE resource_group_items
ADD COLUMN item_type VARCHAR(32) NOT NULL DEFAULT 'resource' AFTER group_id;
END IF;
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'resource_group_items' AND COLUMN_NAME = 'wallet_asset_type'
) THEN
ALTER TABLE resource_group_items
ADD COLUMN wallet_asset_type VARCHAR(32) NOT NULL DEFAULT '' AFTER resource_id;
END IF;
IF NOT EXISTS (
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'resource_group_items' AND COLUMN_NAME = 'wallet_asset_amount'
) THEN
ALTER TABLE resource_group_items
ADD COLUMN wallet_asset_amount BIGINT NOT NULL DEFAULT 0 AFTER wallet_asset_type;
END IF;
IF EXISTS (
SELECT 1 FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'resource_group_items' AND INDEX_NAME = 'uk_resource_group_items_resource'
) THEN
ALTER TABLE resource_group_items DROP INDEX uk_resource_group_items_resource;
END IF;
IF NOT EXISTS (
SELECT 1 FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'resource_group_items' AND INDEX_NAME = 'uk_resource_group_items_member'
) THEN
ALTER TABLE resource_group_items
ADD UNIQUE KEY uk_resource_group_items_member (app_code, group_id, item_type, resource_id, wallet_asset_type);
END IF;
END$$
DELIMITER ;
CALL migrate_resource_group_wallet_asset_items();
DROP PROCEDURE migrate_resource_group_wallet_asset_items;