feat: 添加媒体资源处理的异步任务及相关逻辑
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"quyun/v2/app/commands/testx"
|
||||
"quyun/v2/app/errorx"
|
||||
tenant_dto "quyun/v2/app/http/tenant/dto"
|
||||
jobs_args "quyun/v2/app/jobs/args"
|
||||
"quyun/v2/database"
|
||||
"quyun/v2/database/models"
|
||||
"quyun/v2/pkg/consts"
|
||||
@@ -109,3 +110,49 @@ func (s *MediaAssetTestSuite) Test_AdminUploadInit_VariantAndSource() {
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func (s *MediaAssetTestSuite) Test_AdminUploadComplete_EnqueueAndProcess() {
|
||||
Convey("MediaAsset.AdminUploadComplete enqueue job and worker process", s.T(), func() {
|
||||
ctx := s.T().Context()
|
||||
now := time.Now().UTC()
|
||||
tenantID := int64(1)
|
||||
userID := int64(2)
|
||||
|
||||
database.Truncate(ctx, s.DB, "river_job", models.TableNameMediaAsset)
|
||||
|
||||
asset := &models.MediaAsset{
|
||||
TenantID: tenantID,
|
||||
UserID: userID,
|
||||
Type: consts.MediaAssetTypeVideo,
|
||||
Status: consts.MediaAssetStatusUploaded,
|
||||
Provider: "test",
|
||||
Bucket: "b",
|
||||
ObjectKey: "k",
|
||||
Meta: []byte("{}"),
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
So(asset.Create(ctx), ShouldBeNil)
|
||||
|
||||
Convey("首次 upload_complete:uploaded -> processing,并入队一次", func() {
|
||||
out, err := MediaAsset.AdminUploadComplete(ctx, tenantID, userID, asset.ID, nil, now)
|
||||
So(err, ShouldBeNil)
|
||||
So(out.Status, ShouldEqual, consts.MediaAssetStatusProcessing)
|
||||
|
||||
var cnt int
|
||||
err = s.DB.QueryRowContext(ctx, "SELECT COUNT(1) FROM river_job WHERE kind = $1", jobs_args.MediaAssetProcessJob{}.Kind()).Scan(&cnt)
|
||||
So(err, ShouldBeNil)
|
||||
So(cnt, ShouldEqual, 1)
|
||||
|
||||
Convey("重复 upload_complete:仍可触发入队,但不会产生重复任务", func() {
|
||||
out2, err := MediaAsset.AdminUploadComplete(ctx, tenantID, userID, asset.ID, nil, now.Add(1*time.Second))
|
||||
So(err, ShouldBeNil)
|
||||
So(out2.Status, ShouldEqual, consts.MediaAssetStatusProcessing)
|
||||
|
||||
err = s.DB.QueryRowContext(ctx, "SELECT COUNT(1) FROM river_job WHERE kind = $1", jobs_args.MediaAssetProcessJob{}.Kind()).Scan(&cnt)
|
||||
So(err, ShouldBeNil)
|
||||
So(cnt, ShouldEqual, 1)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user