functions to double check the sanity of JSON Marshal
This commit is contained in:
parent
49ad81bc27
commit
aebfe325d6
22
addChat.go
22
addChat.go
|
@ -6,7 +6,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.wit.com/log"
|
"go.wit.com/log"
|
||||||
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// returns true if the pb was added
|
// returns true if the pb was added
|
||||||
|
@ -15,14 +14,23 @@ func (c *Chat) AddGeminiRequest(fname string, age time.Time, pb *GeminiRequest)
|
||||||
for _, e := range c.GetEntries() {
|
for _, e := range c.GetEntries() {
|
||||||
if e.GetContentFile() == fname {
|
if e.GetContentFile() == fname {
|
||||||
log.Info("fname already here", fname)
|
log.Info("fname already here", fname)
|
||||||
|
if iContent, iParts, ok := e.VerifyGeminiRequest(pb); ok {
|
||||||
|
log.Info("pb is already here with same size", iContent, iParts)
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
log.Info("pb is already here but things don't match", iContent, iParts)
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e := new(ChatEntry)
|
log.Info("not sure if c.Entries == pb for real. need to read Content & Parts")
|
||||||
e.Ctime = timestamppb.New(age)
|
/*
|
||||||
e.From = Who_USER
|
e := new(ChatEntry)
|
||||||
e.ContentFile = fname
|
e.Ctime = timestamppb.New(age)
|
||||||
e.GeminiRequest = pb
|
e.From = Who_USER
|
||||||
c.AppendEntry(e)
|
e.ContentFile = fname
|
||||||
|
e.GeminiRequest = pb
|
||||||
|
c.AppendEntry(e)
|
||||||
|
*/
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
32
helpers.go
32
helpers.go
|
@ -101,3 +101,35 @@ func (x *Chat) AppendEntry(y *ChatEntry) {
|
||||||
|
|
||||||
x.Entries = append(x.Entries, proto.Clone(y).(*ChatEntry))
|
x.Entries = append(x.Entries, proto.Clone(y).(*ChatEntry))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// returns true if the pb is probably the same
|
||||||
|
func (c *ChatEntry) VerifyGeminiRequest(pb *GeminiRequest) (int, int, bool) {
|
||||||
|
if c.GeminiRequest == nil {
|
||||||
|
log.Warn("There is no GeminiRequest in the chat protobuf")
|
||||||
|
return -1, -1, false
|
||||||
|
}
|
||||||
|
if pb == nil {
|
||||||
|
log.Warn("There is no GeminiRequest in the passed in protobuf")
|
||||||
|
return -1, -1, false
|
||||||
|
}
|
||||||
|
if len(c.GeminiRequest.GetContents()) != len(pb.GetContents()) {
|
||||||
|
log.Warn("c != pb", len(c.GeminiRequest.GetContents()), len(pb.GetContents()))
|
||||||
|
return -1, -1, false
|
||||||
|
}
|
||||||
|
var cCount int // # of Parts in all the Contents
|
||||||
|
var pbCount int // # of Parts in all the Contents
|
||||||
|
for _, grc := range c.GeminiRequest.GetContents() {
|
||||||
|
cCount += len(grc.GetParts())
|
||||||
|
|
||||||
|
}
|
||||||
|
for _, grc := range pb.GetContents() {
|
||||||
|
pbCount += len(grc.GetParts())
|
||||||
|
|
||||||
|
}
|
||||||
|
if cCount != pbCount {
|
||||||
|
log.Warn("c != pb", cCount, pbCount)
|
||||||
|
return len(c.GeminiRequest.GetContents()), cCount, false
|
||||||
|
}
|
||||||
|
log.Info("EVERYTHING MATCHED", cCount, pbCount, len(c.GeminiRequest.GetContents()), len(pb.GetContents()))
|
||||||
|
return len(c.GeminiRequest.GetContents()), cCount, true
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue