137 lines
3.7 KiB
Go
137 lines
3.7 KiB
Go
package dao
|
||
|
||
import (
|
||
"fmt"
|
||
"gorm.io/gorm"
|
||
"time"
|
||
)
|
||
|
||
type CID struct {
|
||
gorm.Model
|
||
Auth_id int `gorm:"column:auth_id"`
|
||
Name string `gorm:"column:name"`
|
||
Url string `gorm:"column:url"`
|
||
Time int `gorm:"column:time"` // 定时任务,单位秒,大于0表示定时任务
|
||
LastSuccess time.Time `gorm:"column:last_success" json:"last_success"`
|
||
LastFail time.Time `gorm:"column:last_fail" json:"last_fail"`
|
||
Script string `gorm:"column:script"`
|
||
Token string `gorm:"column:token"` // 用于外部回调
|
||
}
|
||
|
||
type CIDRunLog struct {
|
||
gorm.Model
|
||
CID_id int `gorm:"column:cid_id"`
|
||
Auth_id int `form:"column:auth_id"`
|
||
Script string `gorm:"column:script"`
|
||
RunTime float64 `gorm:"column:run_time"`
|
||
Log string `gorm:"column:log"`
|
||
Error string `gorm:"column:error"`
|
||
}
|
||
|
||
// CreateCID 创建持续集成、部署
|
||
func CreateCID(name, url, script, token string, time, auth_id int) uint {
|
||
cid := CID{Name: name, Url: url, Script: script, Token: token, Auth_id: auth_id, Time: time}
|
||
result := DB.Create(&cid)
|
||
if result.Error != nil {
|
||
return 0
|
||
}
|
||
return cid.ID
|
||
}
|
||
|
||
// DeleteCIDByID 删除持续集成、部署
|
||
func DeleteCIDByID(id, auth_id int) bool {
|
||
res := DB.Model(&CID{}).Where("id = ? and auth_id = ?", id, auth_id).Delete(&CID{})
|
||
if res.Error != nil {
|
||
return false
|
||
}
|
||
return true
|
||
}
|
||
|
||
// FindCIDByID 查找持续集成、部署
|
||
func FindCIDByID(id, auth_id int) CID {
|
||
var cid CID
|
||
DB.Where("id = ? and auth_id = ?", id, auth_id).First(&cid)
|
||
return cid
|
||
}
|
||
|
||
// FindCIDByAuthID 查找持续集成、部署
|
||
func FindCIDByAuthID(auth_id int) []CID {
|
||
var cids []CID
|
||
DB.Where("auth_id = ?", auth_id).Order("created_at").Find(&cids)
|
||
return cids
|
||
}
|
||
|
||
// UpdateCIDByID 更新持续集成、部署
|
||
func UpdateCIDByID(id, auth_id, time int, name, url, script, token string) bool {
|
||
pd := FindCIDByID(id, auth_id)
|
||
if pd.ID == 0 {
|
||
return false
|
||
}
|
||
// 如果token为空,则不更新token
|
||
if token == "" {
|
||
token = pd.Token
|
||
}
|
||
result := DB.Model(&CID{}).Where("id = ? and auth_id = ?", id, auth_id).Updates(CID{Name: name, Url: url, Script: script, Token: token, Time: time})
|
||
if result.Error != nil {
|
||
return false
|
||
}
|
||
return true
|
||
}
|
||
|
||
// CreateRunLog,添加执行日志
|
||
func CreateRunLog(cid_id, auth_id int, script, log, err string, runtime float64) uint {
|
||
cidRunLog := CIDRunLog{CID_id: cid_id, Auth_id: auth_id, Log: log, Error: err, Script: script, RunTime: runtime}
|
||
result := DB.Create(&cidRunLog)
|
||
if result != nil {
|
||
fmt.Println(err)
|
||
return 0
|
||
}
|
||
return cidRunLog.ID
|
||
}
|
||
|
||
func FindRunLogByAuthID(auth_id int) []CIDRunLog {
|
||
var cidRunLogs []CIDRunLog
|
||
DB.Where(" auth_id = ?", auth_id).Order("created_at desc").Find(&cidRunLogs)
|
||
return cidRunLogs
|
||
}
|
||
|
||
func FindRunLogByID(auth_id, cid_id int) []CIDRunLog {
|
||
var cidRunLog []CIDRunLog
|
||
DB.Where("cid_id = ? and auth_id = ?", cid_id, auth_id).Order("created_at desc").Limit(30).Find(&cidRunLog)
|
||
return cidRunLog
|
||
}
|
||
func FindRunLogByCIDLogID(id, auth_id int) []CIDRunLog {
|
||
var cidRunLogs []CIDRunLog
|
||
DB.Where("id = ? and auth_id = ?", id, auth_id).Order("created_at desc").Limit(30).Find(&cidRunLogs)
|
||
return cidRunLogs
|
||
}
|
||
|
||
func FindCIDByIDAndToken(id int, token string) CID {
|
||
var cid CID
|
||
DB.Where("id = ? and token = ?", id, token).First(&cid)
|
||
return cid
|
||
}
|
||
|
||
func FindCIDByTime() []CID {
|
||
var cids []CID
|
||
DB.Where("time > 0").Find(&cids)
|
||
return cids
|
||
}
|
||
|
||
// FindCIDByID 查找持续集成、部署
|
||
func FindCIDByCID(id uint) CID {
|
||
var cid CID
|
||
DB.Where("id = ? ", id).First(&cid)
|
||
return cid
|
||
}
|
||
|
||
func UpdateLastSuccessByID(id int, time time.Time) error {
|
||
res := DB.Where("id = ?", id).Update("last_success", time)
|
||
return res.Error
|
||
}
|
||
|
||
func UpdateLastFailByID(id int, time time.Time) error {
|
||
res := DB.Where("id = ?", id).Update("last_fail", time)
|
||
return res.Error
|
||
}
|