topfans/backend/migrations/2026_07_10_004_peripheral_info_restructure.sql
2026-07-13 11:22:56 +08:00

37 lines
1.3 KiB
SQL

-- peripheral_info 加自增主键 + asset_id 可空 + star_id + user_id
-- 用于支持"扫码时预建 peripheral_info,mint 时回填 asset_id 和 user_id"的流程
-- 1. 加自增主键(原本 asset_id 是 PK,但 mint 时 asset 才创建,需要 NULL)
ALTER TABLE peripheral_info
ADD COLUMN IF NOT EXISTS id BIGSERIAL;
-- 2. 如果 asset_id 当前是 PK,需要 drop;GORM AutoMigrate 会处理
ALTER TABLE peripheral_info
DROP CONSTRAINT IF EXISTS peripheral_info_pkey;
ALTER TABLE peripheral_info
ADD PRIMARY KEY (id);
-- 3. asset_id 改为可空默认 NULL(mint 后才回填)
ALTER TABLE peripheral_info
ALTER COLUMN asset_id DROP NOT NULL,
ALTER COLUMN asset_id SET DEFAULT NULL;
-- 4. 加 star_id 默认 87(项目主星)
ALTER TABLE peripheral_info
ADD COLUMN IF NOT EXISTS star_id BIGINT NOT NULL DEFAULT 87;
-- 5. 加 user_id(mint 后回填,默认 NULL)
ALTER TABLE peripheral_info
ADD COLUMN IF NOT EXISTS user_id BIGINT DEFAULT NULL;
-- 6. 序列同步
SELECT setval(pg_get_serial_sequence('peripheral_info', 'id'), COALESCE((SELECT MAX(id) FROM peripheral_info), 0));
-- 7. code 加 UNIQUE 约束(SKU/序列号唯一)
CREATE UNIQUE INDEX IF NOT EXISTS idx_peripheral_info_code ON peripheral_info(code) WHERE code <> '';
-- 8. 周边缩略图
ALTER TABLE peripheral_info
ADD COLUMN IF NOT EXISTS image VARCHAR(500) DEFAULT '';