package dao import ( "fmt" "gorm.io/gorm" ) 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表示定时任务 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).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 }