123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package gorm
- import (
- "context"
- "strings"
- "github.com/jinzhu/gorm"
- "go-common/app/admin/main/aegis/model/net"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- // FlowByID .
- func (d *Dao) FlowByID(c context.Context, id int64) (f *net.Flow, err error) {
- f = &net.Flow{}
- err = d.orm.Where("id=?", id).First(f).Error
- if err == gorm.ErrRecordNotFound {
- err = ecode.AegisFlowNotFound
- return
- }
- if err != nil {
- log.Error("FlowByID(%+v) error(%v)", id, err)
- }
- return
- }
- // FlowList .
- func (d *Dao) FlowList(c context.Context, pm *net.ListNetElementParam) (result *net.ListFlowRes, err error) {
- result = &net.ListFlowRes{
- Pager: net.Pager{
- Num: pm.Pn,
- Size: pm.Ps,
- },
- }
- db := d.orm.Table(net.TableFlow).Where("net_id=?", pm.NetID)
- if len(pm.ID) > 0 {
- db = db.Where("id in (?)", pm.ID)
- }
- pm.Name = strings.TrimSpace(pm.Name)
- if pm.Name != "" {
- db = db.Where("name=?", pm.Name)
- }
- err = db.Scopes(state(pm.State)).Count(&result.Pager.Total).Scopes(pager(pm.Ps, pm.Pn, pm.Sort)).Find(&result.Result).Error
- if err != nil {
- log.Error("FlowList find error(%v) params(%+v)", err, pm)
- }
- return
- }
- // FlowByUnique .
- func (d *Dao) FlowByUnique(c context.Context, netID int64, name string) (f *net.Flow, err error) {
- f = &net.Flow{}
- err = d.orm.Where("net_id=? AND name=?", netID, name).First(f).Error
- if err == gorm.ErrRecordNotFound {
- err = nil
- f = nil
- return
- }
- if err != nil {
- log.Error("FlowByUnique(%d,%s) error(%v)", netID, name, err)
- }
- return
- }
- // Flows .
- func (d *Dao) Flows(c context.Context, ids []int64) (fs []*net.Flow, err error) {
- fs = []*net.Flow{}
- err = d.orm.Where("id in (?)", ids).Find(&fs).Error
- if err != nil {
- log.Error("Flows(%v) error(%v)", ids, err)
- }
- return
- }
- // FlowsByNet .
- func (d *Dao) FlowsByNet(c context.Context, netID []int64) (fs []*net.Flow, err error) {
- fs = []*net.Flow{}
- err = d.orm.Scopes(Available).Where("net_id in (?)", netID).Order("id ASC").Find(&fs).Error
- if err != nil {
- log.Error("Flows(%d) error(%v)", netID, err)
- }
- return
- }
- func (d *Dao) FlowIDByNet(c context.Context, nid []int64) (res map[int64][]int64, err error) {
- res = map[int64][]int64{}
- listi := []struct {
- ID int64 `gorm:"column:id"`
- NetID int64 `gorm:"column:net_id"`
- }{}
- if err = d.orm.Table(net.TableFlow).Select("id,net_id").
- Where("net_id in (?)", nid).Scopes(Available).Scan(&listi).Error; err != nil {
- log.Error("FlowIDByNet error(%v) nid(%v)", err, nid)
- return
- }
- for _, item := range listi {
- res[item.NetID] = append(res[item.NetID], item.ID)
- }
- return
- }
|