diff options
| author | Jeff Carr <[email protected]> | 2025-01-12 01:32:52 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-12 01:32:52 -0600 |
| commit | cfd9ec5ccddded628f4f9bf95beefc11dcfeb51b (patch) | |
| tree | 9db213a7458b52cec79ee68a0a2911ed2cb4b2f3 /human.go | |
| parent | 0d2dc9fb2518a34d5f60836a92ebeef4d57a3943 (diff) | |
refactor again. I want to make this clean
as clean as possible because, I use this tool alot. everywhere.
I want it to always work. I need do not want it to break
Diffstat (limited to 'human.go')
| -rw-r--r-- | human.go | 88 |
1 files changed, 87 insertions, 1 deletions
@@ -1,11 +1,18 @@ package main import ( + "fmt" + "go.wit.com/log" ) +// This was just going to be a function to print the results to stdout + +// instead, it's the core logic of the whole app +// --dry-run on the command line will just print what would be generated + // print the protobuf in human form -func (pf *File) printMsgTable() { +func (pf *File) printMsgTable() error { pf.Bases.printMsg() pf.Base.printMsg() @@ -13,6 +20,85 @@ func (pf *File) printMsgTable() { for _, msg := range pf.MsgNames { msg.printMsg() } + + log.Printf("\n") + log.Printf(" %-2s %20s %20s %20s %20s\n", "", "PARENT STRUCT", "VAR STRUCT TYPE", "VAR NAME", "LOCK") + // for i, s := range slices.Backward(pf.ToSort) { + for i, s := range pf.ToSort { + var funcname string + STRUCT := s.MsgName + CHILD := s.VarType + VARNAME := s.VarName + LOCK := s.Lockname + + log.Printf("SORT: %-2d %20s %20s %20s %20s %s\n", i, STRUCT, CHILD, VARNAME, LOCK, "") + + var FUNCTYPE string + if STRUCT == VARNAME { + FUNCTYPE = STRUCT + } else { + FUNCTYPE = VARNAME + } + + if s.VarType+"s" == s.VarName { + funcname = "func (x *" + FUNCTYPE + ") All() *[]iter" + s.VarType + } else { + funcname = "func (x *" + FUNCTYPE + ") all" + s.VarName + "() *[]iter" + s.VarType + } + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + msg := pf.findMsg(s.VarType) + if msg == nil { + return fmt.Errorf("failed to find struct %s", s.VarType) + } + for _, v := range msg.Vars { + if v.HasSort { + funcname := "func (x *" + FUNCTYPE + ") SortBy" + v.VarName + "(" + v.VarType + ") *[]iter" + s.VarType + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + } + + var ucount int + for _, v := range msg.Vars { + if v.HasUnique { + ucount += 1 + funcname := "func (x *" + FUNCTYPE + ") AppendUnique" + v.VarName + "(" + v.VarType + ")" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + } + for _, v := range msg.Vars { + if v.HasUnique { + funcname := "func (x *" + FUNCTYPE + ") DeleteBy" + v.VarName + "(" + v.VarType + ") bool" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + } + + for _, v := range msg.Vars { + if v.HasUnique { + funcname = "func (x *" + FUNCTYPE + ") FindBy" + v.VarName + "(a " + v.VarType + ") *" + s.VarType + "(using" + v.VarName + ")" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } else { + if v.VarType == "string" { + funcname = "func (x *" + FUNCTYPE + ") FindBy" + v.VarName + "(a string) []*" + s.VarType + " ???" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + } + } + if ucount == 1 { + for _, v := range msg.Vars { + if !v.HasUnique { + continue + } + funcname = "func (x *" + FUNCTYPE + ") Insert(a *" + v.VarType + ") (*" + CHILD + ", isNew bool)" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + } + if ucount > 1 { + funcname = "func (x *" + FUNCTYPE + ") Insert(a *" + CHILD + ") (*" + CHILD + ", isNew bool)" + log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname) + } + + } + return nil } func (msg *MsgName) printMsg() { |
