refactor(config): mandatory app-config rows seeded in DB; rename to session.setup_timeout
All registry keys must exist as rows in the config table: main seeds missing keys with their defaults at startup, LoadApp fails fast on a missing key, and the code-side fallback const/helper for the onboarding setup timeout is gone -- the value rides in SessionConfig.SetupTimeout. The key is renamed session.idle_timeout -> session.setup_timeout, and the /config page's 'overridden' now means 'differs from the default'. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,11 +45,22 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
overrides, err := db.ConfigValues(context.Background())
|
||||
values, err := db.ConfigValues(context.Background())
|
||||
if err != nil {
|
||||
fatal("read app config overrides", err)
|
||||
fatal("read app config", err)
|
||||
}
|
||||
appCfg, err := config.LoadApp(overrides)
|
||||
// Every registry key is mandatory in the DB: seed missing ones with
|
||||
// their defaults so the config table is always fully populated (no
|
||||
// code-side fallbacks anywhere downstream).
|
||||
for _, k := range config.AppRegistry() {
|
||||
if _, ok := values[k.Key]; !ok {
|
||||
if err := db.SetConfigValue(context.Background(), k.Key, k.Default); err != nil {
|
||||
fatal("seed app config default", err)
|
||||
}
|
||||
values[k.Key] = k.Default
|
||||
}
|
||||
}
|
||||
appCfg, err := config.LoadApp(values)
|
||||
if err != nil {
|
||||
fatal("load app config", err)
|
||||
}
|
||||
@@ -75,15 +86,14 @@ func main() {
|
||||
garmin.SyncConfig{},
|
||||
authVerifier,
|
||||
api.SessionConfig{
|
||||
Secret: envCfg.SessionSecret,
|
||||
Duration: appCfg.SessionDuration,
|
||||
Secure: envCfg.SessionSecure,
|
||||
BackendURL: envCfg.BackendURL,
|
||||
FrontendURL: envCfg.FrontendURL,
|
||||
Secret: envCfg.SessionSecret,
|
||||
Duration: appCfg.SessionDuration,
|
||||
SetupTimeout: appCfg.SetupTimeout,
|
||||
Secure: envCfg.SessionSecure,
|
||||
BackendURL: envCfg.BackendURL,
|
||||
FrontendURL: envCfg.FrontendURL,
|
||||
})
|
||||
|
||||
server.SetupSessionIdleTimeout = appCfg.SetupSessionIdleTimeout
|
||||
|
||||
for _, e := range envCfg.DisplayEnv() {
|
||||
server.EnvVars = append(server.EnvVars, api.EnvVar{Name: e.Name, Value: e.Value})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user