Files
orbits/cmd/server/main.go
T
2026-04-28 17:18:14 +02:00

48 lines
1.5 KiB
Go

package main
import (
"log/slog"
"orbits-server/internal/server/api"
"orbits-server/internal/server/bootstrap"
"orbits-server/internal/server/database"
"orbits-server/internal/server/watchdog"
"orbits-server/internal/shared/utility"
"os"
)
func main() {
// grab the environment variables from the runtime environment
// unfortunately since its before we configure the loglevel, we cannot use slog logging in those functions
env := bootstrap.LoadConfig()
// configure the logger so we have nice json
level := utility.ParseSlogLevel(env.LogLevel) // defaults to Info
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: &level,
}))
slog.SetDefault(logger)
// print our running environment variable set
slog.Debug("displaying environment variables", "environment", env)
// initiating the database connection for which we safe things
slog.Info("kicking off database connection")
db, err := database.Kickoff(env.DataDirectory)
if err != nil {
slog.Error("failed to initiate a database connection", "error", err)
os.Exit(1)
}
// kick off the watchdog depending on the environment variables
if env.Watchdog {
slog.Info("kicking off watchdog", "watchdog_interval", env.WatchdogInterval)
watchdog.Kickoff(env, db)
} else {
slog.Info("skipping database watchdog", "watchdog_enabled", env.Watchdog)
}
// TO DO make gin log as json
// get ready to kick off the http api with Vue frontend
slog.Info("kicking off http api backend")
api.Kickoff(logger, env, db)
}