Files
quyun-v2/backend/database/migrations/20251222174000_media_assets_variant.sql
Rogee 2cc823d3a8 feat: Introduce MediaAssetVariant for better asset management
- 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.
2025-12-22 19:27:31 +08:00

37 lines
1.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- +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