Add license

This commit is contained in:
George Suntres
2026-04-07 17:30:07 -04:00
parent 7e8cf14bb0
commit db2a850239
5 changed files with 778 additions and 0 deletions

View File

@@ -147,6 +147,31 @@ func MapToStruct(m map[string]any, o any) error {
return nil
}
func BsonToMap(b bson.M) map[string]any {
result := make(map[string]any)
for k, v := range b {
switch val := v.(type) {
case bson.M:
result[k] = BsonToMap(val)
case []interface{}:
arr := make([]any, len(val))
for i, item := range val {
if nested, ok := item.(bson.M); ok {
arr[i] = BsonToMap(nested)
} else {
arr[i] = item
}
}
result[k] = arr
default:
result[k] = val
}
}
return result
}
type WrapA struct {
Items []map[string]any
}
@@ -281,3 +306,60 @@ func StructCopyMatching(source, target any) {
}
}
}
// GetWithDefault
func GetWithDefault(m map[string]any, path string, def any) any {
keys := strings.Split(path, ".")
var current any = m
for _, k := range keys {
if m2, ok := current.(map[string]any); ok {
if val, exists := m2[k]; exists {
current = val
} else {
return def
}
} else {
return def
}
}
return current
}
func GetStringWithDefault(m map[string]any, path, def string) string {
a := GetWithDefault(m, path, def)
return a.(string)
}
func GetString(m map[string]any, path string) string {
a := Get(m, path)
if a == nil {
return ""
} else {
return a.(string)
}
}
func Get(m map[string]any, path string) any {
keys := strings.Split(path, ".")
var current any = m
for _, k := range keys {
if m2, ok := current.(map[string]any); ok {
if val, exists := m2[k]; exists {
current = val
} else {
return nil
}
} else {
return nil
}
}
return current
}