You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.7 KiB
120 lines
2.7 KiB
package dao |
|
|
|
import ( |
|
"go-common/app/admin/ep/tapd/model" |
|
"go-common/library/ecode" |
|
) |
|
|
|
const _wildcards = "%" |
|
|
|
// AddHookURL Add Hook URL. |
|
func (d *Dao) AddHookURL(hookURL *model.HookUrl) error { |
|
return d.db.Create(hookURL).Error |
|
} |
|
|
|
// UpdateHookURL Update Hook URL. |
|
func (d *Dao) UpdateHookURL(hookURL *model.HookUrl) error { |
|
return d.db.Model(&model.HookUrl{}).Where("id=?", hookURL.ID).Update(hookURL).Error |
|
} |
|
|
|
// QueryHookURLByID Query Hook URL By ID. |
|
func (d *Dao) QueryHookURLByID(id int64) (hookURL *model.HookUrl, err error) { |
|
hookURL = &model.HookUrl{} |
|
err = d.db.Model(&model.HookUrl{}).Where("id = ?", id).First(hookURL).Error |
|
if err == ecode.NothingFound { |
|
err = nil |
|
} |
|
return |
|
} |
|
|
|
// AddHookURLandEvent Add Hook URL and Event. |
|
func (d *Dao) AddHookURLandEvent(hookURL *model.HookUrl, urlEvents []*model.UrlEvent) (err error) { |
|
tx := d.db.Begin() |
|
|
|
if err = tx.Error; err != nil { |
|
return |
|
} |
|
|
|
if err = tx.Create(hookURL).Error; err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
|
|
for _, urlEvent := range urlEvents { |
|
urlEvent.UrlID = hookURL.ID |
|
if err = tx.Create(urlEvent).Error; err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
} |
|
|
|
if err = tx.Commit().Error; err != nil { |
|
tx.Rollback() |
|
} |
|
return |
|
} |
|
|
|
// UpdateHookURLandEvent Update Hook URL and Event. |
|
func (d *Dao) UpdateHookURLandEvent(hookURL *model.HookUrl, urlEvents []*model.UrlEvent) (err error) { |
|
tx := d.db.Begin() |
|
if err = tx.Error; err != nil { |
|
return |
|
} |
|
|
|
if err = tx.Model(model.HookUrl{}).Where("id=?", hookURL.ID). |
|
Updates(map[string]interface{}{"url": hookURL.URL, "workspace_id": hookURL.WorkspaceID, "status": hookURL.Status, "update_by": hookURL.UpdateBy}). |
|
Error; err != nil { |
|
|
|
tx.Rollback() |
|
return |
|
} |
|
|
|
for _, urlEvent := range urlEvents { |
|
if urlEvent.ID != 0 { |
|
//update |
|
if err = tx.Model(model.UrlEvent{}).Where("id=?", urlEvent.ID).Update(urlEvent).Error; err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
} else { |
|
//add |
|
if err = tx.Create(urlEvent).Error; err != nil { |
|
tx.Rollback() |
|
return |
|
} |
|
} |
|
} |
|
|
|
if err = tx.Commit().Error; err != nil { |
|
tx.Rollback() |
|
} |
|
return |
|
} |
|
|
|
//FindHookURLs Find Hook URLs. |
|
func (d *Dao) FindHookURLs(req *model.QueryHookURLReq) (total int64, hookURLs []*model.HookUrl, err error) { |
|
gDB := d.db.Model(&model.HookUrl{}) |
|
|
|
if req.ID > 0 { |
|
gDB = gDB.Where("id=?", req.ID) |
|
} |
|
if req.Status > 0 { |
|
gDB = gDB.Where("status=?", req.Status) |
|
} |
|
|
|
if req.UpdateBy != "" { |
|
gDB = gDB.Where("update_by=?", req.UpdateBy) |
|
} |
|
|
|
if req.URL != "" { |
|
gDB = gDB.Where("url like ?", req.URL+_wildcards) |
|
} |
|
|
|
if err = gDB.Count(&total).Error; err != nil { |
|
return |
|
} |
|
|
|
err = gDB.Order("ctime desc").Offset((req.PageNum - 1) * req.PageSize).Limit(req.PageSize).Find(&hookURLs).Error |
|
|
|
return |
|
}
|
|
|