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

@@ -53,9 +53,10 @@ func (s *MediaAssetTestSuite) Test_AdminUploadInit_VariantAndSource() {
Convey("main variant 不允许 source_asset_id", func() {
src := int64(123)
v := consts.MediaAssetVariantMain
_, err := MediaAsset.AdminUploadInit(ctx, tenantID, userID, &tenant_dto.AdminMediaAssetUploadInitForm{
Type: "video",
Variant: "main",
Variant: &v,
SourceAssetID: &src,
}, now)
So(err, ShouldNotBeNil)
@@ -65,9 +66,10 @@ func (s *MediaAssetTestSuite) Test_AdminUploadInit_VariantAndSource() {
})
Convey("preview variant 必须带 source_asset_id", func() {
v := consts.MediaAssetVariantPreview
_, err := MediaAsset.AdminUploadInit(ctx, tenantID, userID, &tenant_dto.AdminMediaAssetUploadInitForm{
Type: "video",
Variant: "preview",
Variant: &v,
}, now)
So(err, ShouldNotBeNil)
var appErr *errorx.AppError
@@ -94,9 +96,10 @@ func (s *MediaAssetTestSuite) Test_AdminUploadInit_VariantAndSource() {
_, err := s.DB.ExecContext(ctx, "UPDATE media_assets SET variant = 'preview' WHERE tenant_id = $1 AND id = $2", tenantID, src.ID)
So(err, ShouldBeNil)
v := consts.MediaAssetVariantPreview
_, err = MediaAsset.AdminUploadInit(ctx, tenantID, userID, &tenant_dto.AdminMediaAssetUploadInitForm{
Type: "video",
Variant: "preview",
Variant: &v,
SourceAssetID: &src.ID,
}, now)
So(err, ShouldNotBeNil)
@@ -106,4 +109,3 @@ func (s *MediaAssetTestSuite) Test_AdminUploadInit_VariantAndSource() {
})
})
}