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 }