Backend published auf signage/screen/{slug}/playlist-changed nach
Playlist-Mutationen (2s Debounce). Agent subscribed und fetcht
Playlist sofort (3s Debounce). 60s-Polling bleibt als Fallback.
Neue Packages: mqttnotifier (Backend), mqttsubscriber (Agent)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
35 lines
996 B
Go
35 lines
996 B
Go
package config
|
|
|
|
import "os"
|
|
|
|
type Config struct {
|
|
HTTPAddress string
|
|
StatusStorePath string
|
|
DatabaseURL string
|
|
UploadDir string
|
|
// MQTT — optional. When MQTTBroker is empty, notifications are disabled.
|
|
MQTTBroker string
|
|
MQTTUsername string
|
|
MQTTPassword string
|
|
}
|
|
|
|
func Load() Config {
|
|
return Config{
|
|
HTTPAddress: getenv("MORZ_INFOBOARD_HTTP_ADDR", ":8080"),
|
|
StatusStorePath: os.Getenv("MORZ_INFOBOARD_STATUS_STORE_PATH"),
|
|
DatabaseURL: getenv("MORZ_INFOBOARD_DATABASE_URL", "postgres://morz_infoboard:morz_infoboard@localhost:5432/morz_infoboard?sslmode=disable"),
|
|
UploadDir: getenv("MORZ_INFOBOARD_UPLOAD_DIR", "/tmp/morz-uploads"),
|
|
MQTTBroker: os.Getenv("MORZ_INFOBOARD_MQTT_BROKER"),
|
|
MQTTUsername: os.Getenv("MORZ_INFOBOARD_MQTT_USERNAME"),
|
|
MQTTPassword: os.Getenv("MORZ_INFOBOARD_MQTT_PASSWORD"),
|
|
}
|
|
}
|
|
|
|
func getenv(key, fallback string) string {
|
|
value := os.Getenv(key)
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
|
|
return value
|
|
}
|