goyave.dev/goyave/v5@v5.0.0-rc9.0.20240517145003-d3f977d0b9f3/config/default.go (about) 1 package config 2 3 import "reflect" 4 5 var configDefaults = object{ 6 "app": object{ 7 "name": &Entry{"goyave", []any{}, reflect.String, false}, 8 "environment": &Entry{"localhost", []any{}, reflect.String, false}, 9 "debug": &Entry{true, []any{}, reflect.Bool, false}, 10 "defaultLanguage": &Entry{"en-US", []any{}, reflect.String, false}, 11 }, 12 "server": object{ 13 "host": &Entry{"127.0.0.1", []any{}, reflect.String, false}, 14 "domain": &Entry{"", []any{}, reflect.String, false}, 15 "port": &Entry{8080, []any{}, reflect.Int, false}, 16 "writeTimeout": &Entry{10, []any{}, reflect.Int, false}, 17 "readTimeout": &Entry{10, []any{}, reflect.Int, false}, 18 "readHeaderTimeout": &Entry{10, []any{}, reflect.Int, false}, 19 "idleTimeout": &Entry{20, []any{}, reflect.Int, false}, 20 "websocketCloseTimeout": &Entry{10, []any{}, reflect.Int, false}, 21 "maxUploadSize": &Entry{10.0, []any{}, reflect.Float64, false}, 22 "proxy": object{ 23 "protocol": &Entry{"http", []any{"http", "https"}, reflect.String, false}, 24 "host": &Entry{nil, []any{}, reflect.String, false}, 25 "port": &Entry{80, []any{}, reflect.Int, false}, 26 "base": &Entry{"", []any{}, reflect.String, false}, 27 }, 28 }, 29 "database": object{ 30 "connection": &Entry{"none", []any{}, reflect.String, false}, 31 "host": &Entry{"127.0.0.1", []any{}, reflect.String, false}, 32 "port": &Entry{0, []any{}, reflect.Int, false}, 33 "name": &Entry{"", []any{}, reflect.String, false}, 34 "username": &Entry{"", []any{}, reflect.String, false}, 35 "password": &Entry{"", []any{}, reflect.String, false}, 36 "options": &Entry{"", []any{}, reflect.String, false}, 37 "maxOpenConnections": &Entry{20, []any{}, reflect.Int, false}, 38 "maxIdleConnections": &Entry{20, []any{}, reflect.Int, false}, 39 "maxLifetime": &Entry{300, []any{}, reflect.Int, false}, 40 "defaultReadQueryTimeout": &Entry{20000, []any{}, reflect.Int, false}, 41 "defaultWriteQueryTimeout": &Entry{40000, []any{}, reflect.Int, false}, 42 "config": object{ 43 "skipDefaultTransaction": &Entry{false, []any{}, reflect.Bool, false}, 44 "dryRun": &Entry{false, []any{}, reflect.Bool, false}, 45 "prepareStmt": &Entry{true, []any{}, reflect.Bool, false}, 46 "disableNestedTransaction": &Entry{false, []any{}, reflect.Bool, false}, 47 "allowGlobalUpdate": &Entry{false, []any{}, reflect.Bool, false}, 48 "disableAutomaticPing": &Entry{false, []any{}, reflect.Bool, false}, 49 "disableForeignKeyConstraintWhenMigrating": &Entry{false, []any{}, reflect.Bool, false}, 50 }, 51 }, 52 } 53 54 func loadDefaults(src object, dst object) { 55 for k, v := range src { 56 if obj, ok := v.(object); ok { 57 sub := make(object, len(obj)) 58 loadDefaults(obj, sub) 59 dst[k] = sub 60 } else { 61 entry := v.(*Entry) 62 value := entry.Value 63 t := reflect.TypeOf(value) 64 if t != nil && t.Kind() == reflect.Slice { 65 list := reflect.ValueOf(value) 66 length := list.Len() 67 slice := reflect.MakeSlice(reflect.SliceOf(t.Elem()), 0, length) 68 for i := 0; i < length; i++ { 69 slice = reflect.Append(slice, list.Index(i)) 70 } 71 value = slice.Interface() 72 } 73 dst[k] = &Entry{value, entry.AuthorizedValues, entry.Type, entry.IsSlice} 74 } 75 } 76 }