Add BsonDFromSlice, Add AssertDeepEqual

This commit is contained in:
George Suntres
2026-04-25 10:11:40 -04:00
parent 28dcfb9e4c
commit 13c75f62b1
3 changed files with 66 additions and 2 deletions

View File

@@ -212,6 +212,32 @@ func deepCopy(v any) any {
}
}
func BsonDFromSlice(in [][]any) bson.D {
if in == nil {
return bson.D{}
}
var doc bson.D
for _, pair := range in {
if len(pair) != 2 {
continue
}
key, ok := pair[0].(string)
if !ok {
continue // or error
}
doc = append(doc, bson.E{
Key: key,
Value: pair[1], // already `any`
})
}
return doc
}
func BsonDGetAny(d bson.D, key string) (any, bool) {
for _, e := range d {
if e.Key == key {
@@ -263,14 +289,14 @@ func BsonToStruct(m bson.M, o any) error {
// MapToStruct will convert a map[string]any to a struct.
func MapToStruct(m map[string]any, o any) error {
b, err := bson.Marshal(m)
b, err := json.Marshal(m)
if err != nil {
log.Printf("Failed marshal %v", err)
return err
}
err = bson.Unmarshal(b, o)
err = json.Unmarshal(b, o)
if err != nil {
log.Printf("Failed to unmarshal %v", err)