summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-03-09 09:30:17 -0500
committerJeff Carr <[email protected]>2025-03-09 09:30:17 -0500
commit4f881d17c02a9d239aa8b2320607318df1c0d2fa (patch)
treef8303c14d524ea08e250170162c07bb756d21db7
parent7f03282acaf7a5f7746ee46a52ac5bafa818f876 (diff)
add InsertBy() functionsv0.0.64
-rw-r--r--generate.go14
-rw-r--r--generateFind.go68
-rw-r--r--generateInsert.go23
3 files changed, 68 insertions, 37 deletions
diff --git a/generate.go b/generate.go
index e1ef396..8c53297 100644
--- a/generate.go
+++ b/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
diff --git a/generateFind.go b/generateFind.go
index 121ed06..6f799e5 100644
--- a/generateFind.go
+++ b/generateFind.go
@@ -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
+
+ 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 funcdef
+ return ""
}
diff --git a/generateInsert.go b/generateInsert.go
index 79eb6ad..eb1fc95 100644
--- a/generateInsert.go
+++ b/generateInsert.go
@@ -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
}