mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 18:57:32 +00:00
feat: support whole config as env (#6336)
* fix existing env vars * feat: support all config by env * cleanup * remove system users hook * decode system users in setup
This commit is contained in:
35
cmd/hooks/complex.go
Normal file
35
cmd/hooks/complex.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package hooks
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func SliceTypeStringDecode[T any](from, to reflect.Value) (any, error) {
|
||||
into := make([]T, 0)
|
||||
return complexTypeStringDecodeHook(from, to, into)
|
||||
}
|
||||
|
||||
func MapTypeStringDecode[K ~string | ~int, V any](from, to reflect.Value) (any, error) {
|
||||
into := make(map[K]V, 0)
|
||||
return complexTypeStringDecodeHook(from, to, into)
|
||||
}
|
||||
|
||||
func MapHTTPHeaderStringDecode(from, to reflect.Value) (any, error) {
|
||||
into := http.Header{}
|
||||
return complexTypeStringDecodeHook(from, to, into)
|
||||
}
|
||||
|
||||
func complexTypeStringDecodeHook(from, to reflect.Value, out any) (any, error) {
|
||||
fromInterface := from.Interface()
|
||||
if to.Type() != reflect.TypeOf(out) {
|
||||
return fromInterface, nil
|
||||
}
|
||||
data, ok := fromInterface.(string)
|
||||
if !ok {
|
||||
return fromInterface, nil
|
||||
}
|
||||
err := json.Unmarshal([]byte(data), &out)
|
||||
return out, err
|
||||
}
|
Reference in New Issue
Block a user