add InsertBy() functions
This commit is contained in:
parent
7f03282aca
commit
4f881d17c0
14
generate.go
14
generate.go
|
@ -240,7 +240,7 @@ func (pb *Files) makeNewSortfile(pf *File) error {
|
|||
|
||||
// find()
|
||||
for _, v := range msg.Vars {
|
||||
if v.VarType != "string" {
|
||||
if !(v.VarType == "string" || (v.VarType == "int64")) {
|
||||
continue
|
||||
}
|
||||
if v.IsRepeated {
|
||||
|
@ -254,13 +254,15 @@ func (pb *Files) makeNewSortfile(pf *File) error {
|
|||
// special case because of the enforced .proto format
|
||||
FUNCNAME = "FindBy" + v.VarName
|
||||
funcdef := pmsg.generateFindBy(wSort, FUNCNAME, PARENT, s, v)
|
||||
// func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT, VARNAME, VARTYPE, COLOR string) string {
|
||||
log.Printf("Adding %s\n", funcdef)
|
||||
} else {
|
||||
// deprecate these
|
||||
FUNCNAME = "Find" + VARNAME + "By" + v.VarName
|
||||
}
|
||||
|
||||
FRUITS := PARENT
|
||||
FRUIT := s.VarType
|
||||
APPLE := v.VarName
|
||||
COLOR := v.VarType
|
||||
funcdef = pmsg.insertBy(wSort, FRUITS, FRUIT, APPLE, COLOR)
|
||||
log.Printf("Adding %s\n", funcdef)
|
||||
}
|
||||
} else {
|
||||
if v.VarType == "string" {
|
||||
// probably dumb. move to a database if you need this
|
||||
|
|
|
@ -12,31 +12,55 @@ import (
|
|||
|
||||
func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT string, sortvals *Sort, childVar *MsgVar) string {
|
||||
LOCK := msg.getLockname("x")
|
||||
if childVar.VarType != "string" {
|
||||
return ""
|
||||
}
|
||||
VARNAME := sortvals.VarName
|
||||
VARTYPE := sortvals.VarType
|
||||
COLOR := childVar.VarName
|
||||
funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(s string) *" + VARTYPE
|
||||
|
||||
fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR)
|
||||
fmt.Fprintln(w, funcdef, "{")
|
||||
fmt.Fprintln(w, " if x == nil {")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " "+LOCK+".RLock()")
|
||||
fmt.Fprintln(w, " defer "+LOCK+".RUnlock()")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {")
|
||||
fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == s {")
|
||||
fmt.Fprintln(w, " return x."+VARNAME+"[i]")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, "}")
|
||||
fmt.Fprintln(w, "")
|
||||
if childVar.VarType == "string" {
|
||||
funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(s string) *" + VARTYPE
|
||||
|
||||
return funcdef
|
||||
fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR)
|
||||
fmt.Fprintln(w, funcdef, "{")
|
||||
fmt.Fprintln(w, " if x == nil {")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " "+LOCK+".RLock()")
|
||||
fmt.Fprintln(w, " defer "+LOCK+".RUnlock()")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {")
|
||||
fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == s {")
|
||||
fmt.Fprintln(w, " return x."+VARNAME+"[i]")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, "}")
|
||||
fmt.Fprintln(w, "")
|
||||
return funcdef
|
||||
}
|
||||
|
||||
if childVar.VarType == "int64" {
|
||||
funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(y int64) *" + VARTYPE
|
||||
|
||||
fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR)
|
||||
fmt.Fprintln(w, funcdef, "{")
|
||||
fmt.Fprintln(w, " if x == nil {")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " "+LOCK+".RLock()")
|
||||
fmt.Fprintln(w, " defer "+LOCK+".RUnlock()")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {")
|
||||
fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == y {")
|
||||
fmt.Fprintln(w, " return x."+VARNAME+"[i]")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " return nil")
|
||||
fmt.Fprintln(w, "}")
|
||||
fmt.Fprintln(w, "")
|
||||
return funcdef
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
|
|
@ -9,24 +9,29 @@ import (
|
|||
)
|
||||
|
||||
// new idea. useful? TODO: look at this again in 1y
|
||||
func (msg *MsgName) insertBy(w io.Writer, FRUIT, APPLES, APPLE string, COLOR string) {
|
||||
// Mar 2025. yes. this is useful
|
||||
func (msg *MsgName) insertBy(w io.Writer, FRUITS, FRUIT, APPLE string, COLOR string) string {
|
||||
LOCK := msg.getLockname("x")
|
||||
|
||||
fmt.Fprintln(w, "// returns an "+APPLE+" if "+COLOR+" matches, otherwise create")
|
||||
fmt.Fprintln(w, "func (x *"+FRUIT+") InsertBy"+COLOR+" (y string) *"+APPLE+" {")
|
||||
funcdef := "func (x *" + FRUITS + ") InsertBy" + APPLE + " (y " + COLOR + ") *" + FRUIT + " {"
|
||||
|
||||
fmt.Fprintln(w, "// returns a "+FRUIT+" if "+APPLE+" matches, otherwise create")
|
||||
fmt.Fprintln(w, funcdef)
|
||||
fmt.Fprintln(w, " "+LOCK+".Lock()")
|
||||
fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " for _, p := range x."+APPLES+" {")
|
||||
fmt.Fprintln(w, " if p."+COLOR+" == y {")
|
||||
fmt.Fprintln(w, " return p")
|
||||
fmt.Fprintln(w, " for _, z := range x."+FRUITS+" {")
|
||||
fmt.Fprintln(w, " if z."+APPLE+" == y {")
|
||||
fmt.Fprintln(w, " return z")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, " }")
|
||||
fmt.Fprintln(w, "")
|
||||
fmt.Fprintln(w, " z := new("+APPLE+")")
|
||||
fmt.Fprintln(w, " z."+COLOR+" = y")
|
||||
fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", z)")
|
||||
fmt.Fprintln(w, " z := new("+FRUIT+")")
|
||||
fmt.Fprintln(w, " z."+APPLE+" = y")
|
||||
fmt.Fprintln(w, " x."+FRUITS+" = append(x."+FRUITS+", z)")
|
||||
fmt.Fprintln(w, " return z")
|
||||
fmt.Fprintln(w, "}")
|
||||
fmt.Fprintln(w, "")
|
||||
|
||||
return funcdef
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue