api/main.go
2025-03-22 12:05:19 +00:00

46 lines
897 B
Go

package main
import (
"log/slog"
"os"
"os/signal"
"syscall"
"github.com/joho/godotenv"
"github.com/lmittmann/tint"
"api/internal/server"
"api/internal/storage"
"api/internal/worker"
)
func main() {
logger := slog.New(tint.NewHandler(os.Stderr, nil))
slog.SetDefault(logger)
err := godotenv.Load()
if err != nil {
slog.Warn("No .env file was found; using environment variables.", slog.Any("error", err))
}
storage.InitDataStore()
go worker.StartWorkers()
// Shutdown-chan~~
shutdownChan := make(chan os.Signal, 1)
signal.Notify(shutdownChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
go func() {
<-shutdownChan
if err := storage.GlobalDataStore.Save(); err != nil {
slog.Error("Error saving data store on shutdown", slog.Any("error", err))
} else {
slog.Info("Data store saved successfully on shutdown")
}
os.Exit(0)
}()
server.NewRouter()
}