72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
"ppgo_job/consts"
|
|
"ppgo_job/model/entity"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
)
|
|
|
|
var Task = new(taskDao)
|
|
|
|
type taskDao struct{}
|
|
|
|
func (d *taskDao) Insert(ctx context.Context, data *entity.Task) (id int64, err error) {
|
|
return InsertAndGetId(ctx, consts.TableTask, data)
|
|
}
|
|
|
|
func (d *taskDao) GetById(ctx context.Context, id int) (*entity.Task, error) {
|
|
var result *entity.Task
|
|
err := GetById(ctx, consts.TableTask, id, &result)
|
|
return result, err
|
|
}
|
|
|
|
func (d *taskDao) GetList(ctx context.Context, pageNum, pageSize int, filters ...interface{}) ([]*entity.Task, int, error) {
|
|
m := g.DB().Model(consts.TableTask).Ctx(ctx)
|
|
m = buildFilters(m, filters)
|
|
order := extractOrder(filters)
|
|
total, err := m.Count()
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
offset, limit := ParsePage(pageNum, pageSize)
|
|
var result []*entity.Task
|
|
if order == "" {
|
|
order = entity.TaskCols.Status + " desc, " + entity.TaskCols.TaskName + " asc, " + entity.TaskCols.Id + " desc"
|
|
}
|
|
err = m.Limit(limit).Offset(offset).Order(order).Scan(&result)
|
|
return result, total, err
|
|
}
|
|
|
|
func (d *taskDao) GetEnabledList(ctx context.Context) ([]*entity.Task, error) {
|
|
var result []*entity.Task
|
|
err := g.DB().Model(consts.TableTask).Ctx(ctx).Where(entity.TaskCols.Status, 1).Scan(&result)
|
|
return result, err
|
|
}
|
|
|
|
func (d *taskDao) Update(ctx context.Context, data *entity.Task) error {
|
|
return Update(ctx, consts.TableTask, data, g.Map{entity.TaskCols.Id: data.Id})
|
|
}
|
|
|
|
func (d *taskDao) UpdateFields(ctx context.Context, id int, data g.Map) error {
|
|
return Update(ctx, consts.TableTask, data, g.Map{entity.TaskCols.Id: id})
|
|
}
|
|
|
|
func (d *taskDao) Delete(ctx context.Context, id int) error {
|
|
return d.UpdateFields(ctx, id, g.Map{entity.TaskCols.Status: -1})
|
|
}
|
|
|
|
func (d *taskDao) ResetGroupId(ctx context.Context, groupId int) error {
|
|
_, err := g.DB().Model(consts.TableTask).Ctx(ctx).Where(entity.TaskCols.GroupId, groupId).Data(g.Map{entity.TaskCols.GroupId: 0}).Update()
|
|
return err
|
|
}
|
|
|
|
func (d *taskDao) TotalRunNum(ctx context.Context) (int64, error) {
|
|
r, err := g.DB().Model(consts.TableTask).Ctx(ctx).Fields("COALESCE(SUM(" + entity.TaskCols.ExecuteTimes + "), 0) as num").One()
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return r["num"].Int64(), nil
|
|
}
|