75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
|
package dao
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"go-common/app/admin/main/push/model"
|
||
|
"go-common/library/database/sql"
|
||
|
"go-common/library/ecode"
|
||
|
"go-common/library/log"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
_dpConditionSQL = `select id,job,task,conditions,sql_stmt,status,status_url,file from push_dataplatform_conditions where job=?`
|
||
|
_addDpConditionSQL = `insert into push_dataplatform_conditions (job,task,conditions,sql_stmt,status,status_url,file) values (?,?,?,?,?,?,?) on duplicate key update task=?,conditions=?,sql_stmt=?,status=?,status_url=?,file=?`
|
||
|
_updateDpConditionStatusSQL = `update push_dataplatform_conditions set status=? where job=?`
|
||
|
)
|
||
|
|
||
|
// AddDPCondition add data platform task
|
||
|
func (d *Dao) AddDPCondition(ctx context.Context, cond *model.DPCondition) (id int64, err error) {
|
||
|
res, err := d.db.Exec(ctx, _addDpConditionSQL, cond.Job, cond.Task, cond.Condition, cond.SQL, cond.Status, cond.StatusURL, cond.File,
|
||
|
cond.Task, cond.Condition, cond.SQL, cond.Status, cond.StatusURL, cond.File)
|
||
|
if err != nil {
|
||
|
log.Error("d.AddDPCondition(%+v) error(%v)", cond, err)
|
||
|
return
|
||
|
}
|
||
|
id, err = res.LastInsertId()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// DPCondition .
|
||
|
func (d *Dao) DPCondition(ctx context.Context, job string) (c *model.DPCondition, err error) {
|
||
|
c = new(model.DPCondition)
|
||
|
if err = d.db.QueryRow(ctx, _dpConditionSQL, job).Scan(&c.ID, &c.Job, &c.Task, &c.Condition, &c.SQL, &c.Status, &c.StatusURL, &c.File); err != nil {
|
||
|
if err == sql.ErrNoRows {
|
||
|
c = nil
|
||
|
err = nil
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// UpdateDpCondtionStatus .
|
||
|
func (d *Dao) UpdateDpCondtionStatus(ctx context.Context, job string, status int) (err error) {
|
||
|
_, err = d.db.Exec(ctx, _updateDpConditionStatusSQL, status, job)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// Partitions 获取一级分区数据
|
||
|
func (d *Dao) Partitions(ctx context.Context) (m map[int]string, err error) {
|
||
|
var res = struct {
|
||
|
Code int `json:"code"`
|
||
|
Data map[int]struct {
|
||
|
ID int `json:"id"`
|
||
|
Pid int `json:"pid"`
|
||
|
Name string `json:"name"`
|
||
|
} `json:"data"`
|
||
|
}{}
|
||
|
if err = d.httpClient.Get(ctx, d.c.Cfg.PartitionsURL, "", nil, &res); err != nil {
|
||
|
return
|
||
|
}
|
||
|
if !ecode.Int(res.Code).Equal(ecode.OK) {
|
||
|
err = ecode.Int(res.Code)
|
||
|
return
|
||
|
}
|
||
|
m = make(map[int]string)
|
||
|
for _, v := range res.Data {
|
||
|
if v.Pid != 0 {
|
||
|
continue
|
||
|
}
|
||
|
m[v.ID] = v.Name
|
||
|
}
|
||
|
return
|
||
|
}
|