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.
This commit is contained in:
2025-12-22 19:27:31 +08:00
parent d04e2ee693
commit 2cc823d3a8
14 changed files with 439 additions and 171 deletions

View File

@@ -185,6 +185,32 @@ func MediaAssetStatusItems() []requests.KV {
return items
}
// swagger:enum MediaAssetVariant
// ENUM( main, preview )
type MediaAssetVariant string
// Description returns the Chinese label for the specific enum value.
func (t MediaAssetVariant) Description() string {
switch t {
case MediaAssetVariantMain:
return "正片产物"
case MediaAssetVariantPreview:
return "试看产物"
default:
return "未知产物"
}
}
// MediaAssetVariantItems returns the KV list for FE dropdowns.
func MediaAssetVariantItems() []requests.KV {
values := MediaAssetVariantValues()
items := make([]requests.KV, 0, len(values))
for _, v := range values {
items = append(items, requests.NewKV(string(v), v.Description()))
}
return items
}
// contents
// swagger:enum ContentStatus