本文整理汇总了Golang中github.com/gourd/kit/store.Conds类的典型用法代码示例。如果您正苦于以下问题:Golang Conds类的具体用法?Golang Conds怎么用?Golang Conds使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Conds类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Update
// Update Client on condition(s)
func (s *ClientStore) Update(
c store.Conds, ep store.EntityPtr) (err error) {
// get collection
coll, err := s.Coll()
if err != nil {
return
}
// get by condition and ignore the error
cond, _ := c.GetMap()
res := coll.Find(db.Cond(cond))
// Marshal the item, if possible
// (quick fix for upperio problem with db.Marshaler)
if me, ok := ep.(db.Marshaler); ok {
ep, err = me.MarshalDB()
if err != nil {
return
}
}
// update the matched entities
err = res.Update(ep)
if err != nil {
err = s.errorf("Error updating Client: %s", err.Error())
}
return
}
示例2: Delete
// Delete Client on condition(s)
func (s *ClientStore) Delete(
c store.Conds) (err error) {
// get collection
coll, err := s.Coll()
if err != nil {
return
}
// get by condition and ignore the error
cond, _ := c.GetMap()
res := coll.Find(db.Cond(cond))
// remove the matched entities
err = res.Remove()
if err != nil {
err = s.errorf("Error deleting Client: %s", err.Error())
}
return nil
}
示例3: Conds
// Conds Translate the store.Conds interface into
// upperio flavor conditions representation
func Conds(cs store.Conds) interface{} {
conds := cs.GetAll()
out := make([]interface{}, 0)
// accumulate relations
for _, cond := range conds {
if cond.Prop == "" {
// if no prop, assume to be prop
if v, ok := cond.Value.(string); ok {
out = append(out, db.Raw{v})
} else if v, ok := cond.Value.(store.Conds); ok {
leaf := Conds(v)
out = append(out, leaf)
} else if v, ok := cond.Value.(db.Raw); ok {
out = append(out, v)
} else if v, ok := cond.Value.(db.And); ok {
out = append(out, v)
} else if v, ok := cond.Value.(db.Or); ok {
out = append(out, v)
}
} else {
out = append(out, db.Cond{cond.Prop: cond.Value})
}
}
if len(out) == 0 {
return nil // nil for empty query, searchs everything
}
// determine relations
if cs.GetRel() == store.And {
return db.And(out)
} else if cs.GetRel() == store.Or {
return db.Or(out)
}
panic(fmt.Sprintf("Incorrect value of Rel in %#v", cs))
return nil
}