- Added MediaAssetVariant enum with values 'main' and 'preview'. - Updated media asset service logic to utilize MediaAssetVariant for variant handling. - Refactored database models and queries to include variant and source_asset_id fields. - Enhanced validation for asset variants in upload and processing functions. - Updated Swagger documentation to reflect new variant structure and descriptions. - Implemented necessary database migrations to support the new variant constraints.
37 lines
1.1 KiB
SQL
37 lines
1.1 KiB
SQL
-- +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
|
||
DO $$
|
||
BEGIN
|
||
IF NOT EXISTS (
|
||
SELECT 1
|
||
FROM pg_constraint
|
||
WHERE conname = 'ck_media_assets_variant'
|
||
) THEN
|
||
ALTER TABLE media_assets
|
||
ADD CONSTRAINT ck_media_assets_variant
|
||
CHECK (variant IN ('main', 'preview'));
|
||
END IF;
|
||
END
|
||
$$;
|
||
|
||
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
|