Files
media/dao/video/analysis_task_detail_dao.go
2026-06-10 16:10:10 +08:00

100 lines
3.0 KiB
Go

package video
import (
"context"
entity "media/model/entity/video"
"gitea.redpowerfuture.com/red-future/common/db/gfdb"
"github.com/gogf/gf/v2/frame/g"
)
var AnalysisTaskDetail = new(analysisTaskDetailDao)
type analysisTaskDetailDao struct{}
const analysisTaskDetailTable = "video_analysis_task_detail"
// Insert 创建明细
func (d *analysisTaskDetailDao) Insert(ctx context.Context, data *entity.AnalysisTaskDetail) (id int64, err error) {
r, err := gfdb.DB(ctx).Model(ctx, analysisTaskDetailTable).
Data(data).
FieldsEx(entity.AnalysisTaskDetailCols.Id).
Insert()
if err != nil {
return 0, err
}
return r.LastInsertId()
}
// BatchInsert 批量创建明细
func (d *analysisTaskDetailDao) BatchInsert(ctx context.Context, taskID string, videoURLs []string) error {
for _, videoURL := range videoURLs {
detail := &entity.AnalysisTaskDetail{
TaskID: taskID,
VideoURL: videoURL,
Status: "pending",
}
if _, err := d.Insert(ctx, detail); err != nil {
return err
}
}
return nil
}
// GetByTaskID 根据taskId查询所有明细
func (d *analysisTaskDetailDao) GetByTaskID(ctx context.Context, taskID string) (res []*entity.AnalysisTaskDetail, err error) {
r, err := gfdb.DB(ctx).Model(ctx, analysisTaskDetailTable).
Where(entity.AnalysisTaskDetailCols.TaskID, taskID).
Order("id asc").
All()
if err != nil {
return nil, err
}
if r == nil {
return nil, nil
}
err = r.Structs(&res)
return
}
// UpdateSuccess 更新明细为成功
func (d *analysisTaskDetailDao) UpdateSuccess(ctx context.Context, taskID string, videoURL string, videoSavePath string, captionResult string) error {
_, err := gfdb.DB(ctx).Model(ctx, analysisTaskDetailTable).
Data(g.Map{
entity.AnalysisTaskDetailCols.Status: "success",
entity.AnalysisTaskDetailCols.VideoSavePath: videoSavePath,
entity.AnalysisTaskDetailCols.CaptionResult: captionResult,
entity.AnalysisTaskDetailCols.FailReason: "",
}).
Where(entity.AnalysisTaskDetailCols.TaskID, taskID).
Where(entity.AnalysisTaskDetailCols.VideoURL, videoURL).
Update()
return err
}
// UpdateError 更新明细为失败
func (d *analysisTaskDetailDao) UpdateError(ctx context.Context, taskID string, videoURL string, failReason string) error {
_, err := gfdb.DB(ctx).Model(ctx, analysisTaskDetailTable).
Data(g.Map{
entity.AnalysisTaskDetailCols.Status: "failed",
entity.AnalysisTaskDetailCols.FailReason: failReason,
}).
Where(entity.AnalysisTaskDetailCols.TaskID, taskID).
Where(entity.AnalysisTaskDetailCols.VideoURL, videoURL).
Update()
return err
}
// UpdateVideoSavePath 更新视频保存路径
func (d *analysisTaskDetailDao) UpdateVideoSavePath(ctx context.Context, taskID string, videoURL string, savePath string) error {
_, err := gfdb.DB(ctx).Model(ctx, analysisTaskDetailTable).
Data(g.Map{
entity.AnalysisTaskDetailCols.VideoSavePath: savePath,
}).
Where(entity.AnalysisTaskDetailCols.TaskID, taskID).
Where(entity.AnalysisTaskDetailCols.VideoURL, videoURL).
Update()
return err
}