go-common/app/admin/main/macross/dao/publish.go
2019-04-22 18:49:16 +08:00

54 lines
1.5 KiB
Go

package dao
import (
"bytes"
"context"
"fmt"
"go-common/app/admin/main/macross/model/publish"
"go-common/library/log"
)
const (
_logSharding = 10
// dashborad
_inDashboradSQL = `INSERT INTO dashboard (name,label,commit_info,out_url,coverage_url,text_size_arm64,res_size,extra) VALUES(?,?,?,?,?,?,?,?)`
_inDashboradLogsSQL = `INSERT INTO dashboard_log_%02d (dashboard_id,level,msg) VALUES`
)
func (d *Dao) hitLogs(id int64) int64 {
return id % _logSharding
}
// Dashborad insert dashboard.
func (d *Dao) Dashborad(c context.Context, dashboard *publish.Dashboard) (rows int64, err error) {
res, err := d.db.Exec(c, _inDashboradSQL, dashboard.Name, dashboard.Label, dashboard.Commit, dashboard.OutURL, dashboard.CoverageURL, dashboard.TextSizeArm64, dashboard.ResSize, dashboard.Extra)
if err != nil {
log.Error("Dashborad() d.db.Exec() error(%v)", err)
return
}
rows, err = res.LastInsertId()
return
}
// DashboradLogs insert dashboard log.
func (d *Dao) DashboradLogs(c context.Context, id int64, logs []*publish.Log) (rows int64, err error) {
var (
buffer bytes.Buffer
insertTp string
)
insertTp = "(%d,'%s','%s'),"
buffer.WriteString(fmt.Sprintf(_inDashboradLogsSQL, d.hitLogs(id)))
for _, v := range logs {
buffer.WriteString(fmt.Sprintf(insertTp, id, v.Level, v.Msg))
}
buffer.Truncate(buffer.Len() - 1)
res, err := d.db.Exec(c, buffer.String())
if err != nil {
log.Error("DashboradLogs d.db.Exec() error(%v)", err)
return
}
rows, err = res.RowsAffected()
return
}