maybe ready to test it on real stuff

This commit is contained in:
Jeff Carr 2025-01-12 04:58:53 -06:00
parent 2394b2c055
commit c4355fb69e
1 changed files with 46 additions and 110 deletions

View File

@ -231,23 +231,32 @@ func (pb *Files) makeNewSortfile(pf *File) error {
return fmt.Errorf("failed to find struct %s", s.VarType) return fmt.Errorf("failed to find struct %s", s.VarType)
} }
var ucount int // find()
// append() functions
for _, v := range msg.Vars { for _, v := range msg.Vars {
if v.IsRepeated { if v.IsRepeated {
continue continue
} }
if !v.HasUnique { if v.HasUnique {
continue // funcname = "func (x *" + PARENT + ") Find" + VARNAME + "By" + v.VarName + "(a " + v.VarType + ") *" + s.VarType + "(using" + v.VarName + ")"
// log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
var FUNCNAME string
if PARENT == VARNAME {
// special case because of the enforced .proto format
FUNCNAME = "Find" + v.VarName
} else {
FUNCNAME = "Find" + VARNAME + "By" + v.VarName
}
funcdef := msg.generateFindBy(wSort, FUNCNAME, PARENT, VARNAME, s.VarType, v.VarName)
// func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT, VARNAME, VARTYPE, COLOR string) string {
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
} else {
if v.VarType == "string" {
// probably dumb. move to a database if you need this
// funcname = "func (x *" + PARENT + ") Find" + VARNAME + "By" + v.VarName + "(a string) []*" + s.VarType + " ???"
// log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
}
} }
ucount += 1
// funcname := "func (x *" + PARENT + ") Append" + VARNAME + "By" + v.VarName + "(" + v.VarType + ")"
// log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
// func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, VARNAME, CHILD, COLOR string) string {
// func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VARNAME, VARTYPE string) string {
FUNCNAME := "Append" + VARNAME + "By" + v.VarName
funcdef := msg.addAppendBy(wSort, PARENT, FUNCNAME, VARNAME, v.VarName, s.VarType)
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
} }
// delete() functions // delete() functions
@ -264,7 +273,13 @@ func (pb *Files) makeNewSortfile(pf *File) error {
APPLES := VARNAME APPLES := VARNAME
APPLE := v.VarName APPLE := v.VarName
COLOR := v.VarType COLOR := v.VarType
FUNCNAME := "Delete" + VARNAME + "By" + v.VarName var FUNCNAME string
if PARENT == VARNAME {
// special case because of the enforced .proto format
FUNCNAME = "Delete" + v.VarName
} else {
FUNCNAME = "Delete" + VARNAME + "By" + v.VarName
}
var funcdef string var funcdef string
if argv.Delete { if argv.Delete {
funcdef = msg.deleteByWithCopy(wSort, FRUIT, APPLES, APPLE, COLOR, FUNCNAME, v.VarName) funcdef = msg.deleteByWithCopy(wSort, FRUIT, APPLES, APPLE, COLOR, FUNCNAME, v.VarName)
@ -274,36 +289,38 @@ func (pb *Files) makeNewSortfile(pf *File) error {
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef) log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
} }
var ucount int
// append() functions. these need to be rethought
for _, v := range msg.Vars { for _, v := range msg.Vars {
if v.IsRepeated { if v.IsRepeated {
continue continue
} }
if v.HasUnique { if !v.HasUnique {
funcname = "func (x *" + PARENT + ") Find" + VARNAME + "By" + v.VarName + "(a " + v.VarType + ") *" + s.VarType + "(using" + v.VarName + ")" continue
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
FUNCNAME := "Find" + VARNAME + "By" + v.VarName
funcdef := msg.generateFindBy(wSort, FUNCNAME, PARENT, VARNAME, s.VarType, v.VarName)
// func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT, VARNAME, VARTYPE, COLOR string) string {
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
} else {
if v.VarType == "string" {
funcname = "func (x *" + PARENT + ") Find" + VARNAME + "By" + v.VarName + "(a string) []*" + s.VarType + " ???"
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
}
} }
ucount += 1
var FUNCNAME string
if PARENT == VARNAME {
// special case because of the enforced .proto format
FUNCNAME = "Append" + v.VarName
} else {
FUNCNAME = "Append" + VARNAME + "By" + v.VarName
}
funcdef := msg.addAppendBy(wSort, PARENT, FUNCNAME, VARNAME, v.VarName, s.VarType)
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
} }
if ucount == 1 { if ucount == 1 {
for _, v := range msg.Vars { for _, v := range msg.Vars {
if !v.HasUnique { if !v.HasUnique {
continue continue
} }
funcname = "func (x *" + PARENT + ") Insert(a *" + v.VarType + ") (*" + CHILD + ", isNew bool)" funcname = "func (x *" + PARENT + ") Insert(a *" + v.VarType + ") (*" + CHILD + ", isNew bool) // todo"
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
} }
} }
if ucount > 1 { if ucount > 1 {
funcname = "func (x *" + PARENT + ") Insert(a *" + CHILD + ") (*" + CHILD + ", isNew bool)" funcname = "func (x *" + PARENT + ") Insert(a *" + CHILD + ") (*" + CHILD + ", isNew bool) // todo"
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
} }
@ -346,88 +363,6 @@ func (pf *File) specialBases(wFind io.Writer) {
} }
/* /*
// to simplify being able to read the code, FRUIT, APPLES and APPLE are used
// FRUIT == the string name of the message in the protobuf file
// APPLE == the type of the repeated variable
// APPLES == the variable name of the repeated struct
func (pf *File) processMessage(parent *MsgName, wSort, wFind io.Writer) error {
var FRUIT string = cases.Title(language.English, cases.NoLower).String(parent.Name)
var LOCK string = parent.Lockname
log.Printf("Generating functions for %s\n", FRUIT)
for _, v := range parent.Vars {
if !v.IsRepeated {
// log.Printf("\tSKIP %s %s\n", v.VarName, v.VarType)
continue
}
log.Printf("\tFOUND REPEATED %s %s\n", v.VarName, v.VarType)
// use easier to read variable names APPLE and APPLES in the code
var APPLE string = v.VarType
var APPLES string = cases.Title(language.English, cases.NoLower).String(v.VarName)
// try and find the message struct for APPLE
var found *MsgName
if pf.Base.Name == APPLE {
found = pf.Base
}
for _, m := range pf.MsgNames {
if m.Name == APPLE {
found = m
break
}
}
if found == nil {
return fmt.Errorf("failed to find struct %s", APPLE)
}
log.Printf("FOUND: %s %s for %s\n", APPLES, APPLE, FRUIT)
found.addFindByMsg(wFind, FRUIT, APPLES, APPLE, LOCK)
found.addAppendByMsg(wFind, FRUIT, APPLES, APPLE)
found.addDeleteByMsg(wFind, FRUIT, APPLES, APPLE)
found.addInsertByMsg(wFind, FRUIT, APPLES, APPLE) // new idea
found.addSortByMsg(wSort, FRUIT, APPLES, APPLE)
}
return nil
}
*/
/*
func (parent *MsgName) addFindByMsg(w io.Writer, FRUIT, APPLES, APPLE, LOCK string) {
for _, v := range parent.Vars {
if v.HasUnique {
var COLOR string = cases.Title(language.English, cases.NoLower).String(v.VarName)
log.Printf("\tFIND: (x %s) FindBy%s(string) *%s\n", FRUIT, COLOR, APPLE)
generateFindBy(w, FRUIT, APPLES, APPLE, COLOR, LOCK)
}
}
}
*/
/*
func (parent *MsgName) addDeleteByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
// log.Printf("\tDELETE: %s %s for %s\n", APPLES, APPLE, FRUIT)
var COLORS []string
for _, v := range parent.Vars {
if !v.HasUnique {
continue
}
var COLOR string = cases.Title(language.English, cases.NoLower).String(v.VarName)
COLORS = append(COLORS, COLOR)
log.Printf("\tDELETE: (x %s) DeleteBy%s(string) *%s\n", FRUIT, COLOR, APPLE)
if argv.Delete {
parent.deleteByWithCopy(w, FRUIT, APPLES, APPLE, COLOR)
} else {
parent.deleteBy(w, FRUIT, APPLES, APPLE, COLOR)
}
}
}
*/
func (parent *MsgName) addInsertByMsg(w io.Writer, FRUIT, APPLES, APPLE string) { func (parent *MsgName) addInsertByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
// log.Printf("\tINSERT: %s %s for %s\n", APPLES, APPLE, FRUIT) // log.Printf("\tINSERT: %s %s for %s\n", APPLES, APPLE, FRUIT)
for _, v := range parent.Vars { for _, v := range parent.Vars {
@ -468,3 +403,4 @@ func (parent *MsgName) addSortByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
} }
} }
} }
*/