summaryrefslogtreecommitdiff
path: root/human.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-12 01:32:52 -0600
committerJeff Carr <[email protected]>2025-01-12 01:32:52 -0600
commitcfd9ec5ccddded628f4f9bf95beefc11dcfeb51b (patch)
tree9db213a7458b52cec79ee68a0a2911ed2cb4b2f3 /human.go
parent0d2dc9fb2518a34d5f60836a92ebeef4d57a3943 (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.go88
1 files changed, 87 insertions, 1 deletions
diff --git a/human.go b/human.go
index 0aebb80..c735bf4 100644
--- a/human.go
+++ b/human.go
@@ -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() {