本文整理匯總了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
}