feat: 添加媒体资产变体和来源ID字段,支持预览产品与主资产的关联

This commit is contained in:
2025-12-22 17:56:08 +08:00
parent 335a546aab
commit ad82de3939
10 changed files with 222 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
-- +goose Up
-- +goose StatementBegin
ALTER TABLE media_assets
ADD COLUMN IF NOT EXISTS variant varchar(32) NOT NULL DEFAULT 'main';
-- 回填历史数据:老数据一律视为 main。
UPDATE media_assets
SET variant = 'main'
WHERE variant IS NULL OR variant = '';
-- 约束:只允许 main/preview
ALTER TABLE media_assets
ADD CONSTRAINT IF NOT EXISTS ck_media_assets_variant
CHECK (variant IN ('main', 'preview'));
COMMENT ON COLUMN media_assets.variant IS '产物类型main/preview用于强制试看资源必须绑定独立产物避免用正片绕过';
CREATE INDEX IF NOT EXISTS ix_media_assets_tenant_variant ON media_assets (tenant_id, variant);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP INDEX IF EXISTS ix_media_assets_tenant_variant;
ALTER TABLE media_assets DROP CONSTRAINT IF EXISTS ck_media_assets_variant;
ALTER TABLE media_assets DROP COLUMN IF EXISTS variant;
-- +goose StatementEnd

View File

@@ -0,0 +1,16 @@
-- +goose Up
-- +goose StatementBegin
ALTER TABLE media_assets
ADD COLUMN IF NOT EXISTS source_asset_id bigint;
COMMENT ON COLUMN media_assets.source_asset_id IS '派生来源资源IDpreview 产物可指向对应 main 资源;用于建立 preview/main 的 1:1 追溯关系';
CREATE INDEX IF NOT EXISTS ix_media_assets_tenant_source_asset_id ON media_assets (tenant_id, source_asset_id);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP INDEX IF EXISTS ix_media_assets_tenant_source_asset_id;
ALTER TABLE media_assets DROP COLUMN IF EXISTS source_asset_id;
-- +goose StatementEnd