maybe ready to test it on real stuff
This commit is contained in:
parent
2394b2c055
commit
c4355fb69e
152
generate.go
152
generate.go
|
@ -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 + ")"
|
||||||
}
|
|
||||||
ucount += 1
|
|
||||||
// funcname := "func (x *" + PARENT + ") Append" + VARNAME + "By" + v.VarName + "(" + v.VarType + ")"
|
|
||||||
// log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
|
// log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
|
||||||
// func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, VARNAME, CHILD, COLOR string) string {
|
var FUNCNAME string
|
||||||
// func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VARNAME, VARTYPE string) string {
|
if PARENT == VARNAME {
|
||||||
FUNCNAME := "Append" + VARNAME + "By" + v.VarName
|
// special case because of the enforced .proto format
|
||||||
funcdef := msg.addAppendBy(wSort, PARENT, FUNCNAME, VARNAME, v.VarName, s.VarType)
|
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)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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)
|
}
|
||||||
|
ucount += 1
|
||||||
FUNCNAME := "Find" + VARNAME + "By" + v.VarName
|
var FUNCNAME string
|
||||||
funcdef := msg.generateFindBy(wSort, FUNCNAME, PARENT, VARNAME, s.VarType, v.VarName)
|
if PARENT == VARNAME {
|
||||||
// func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT, VARNAME, VARTYPE, COLOR string) string {
|
// special case because of the enforced .proto format
|
||||||
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
|
FUNCNAME = "Append" + v.VarName
|
||||||
} else {
|
} else {
|
||||||
if v.VarType == "string" {
|
FUNCNAME = "Append" + VARNAME + "By" + v.VarName
|
||||||
funcname = "func (x *" + PARENT + ") Find" + VARNAME + "By" + v.VarName + "(a string) []*" + s.VarType + " ???"
|
|
||||||
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
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) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
Loading…
Reference in New Issue