cockpit-source/backend/cmd/server/main.go
2026-04-02 14:12:43 +08:00

45 lines
725 B
Go

package main
import (
"context"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"cockpit/internal/config"
"cockpit/internal/db"
"cockpit/internal/router"
"cockpit/internal/seed"
)
func main() {
cfg := config.MustLoad()
database := db.MustOpen(cfg)
seed.MustSeed(database)
engine := router.New(cfg, database)
srv := &http.Server{
Addr: cfg.Server.Addr,
Handler: engine,
}
go func() {
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
panic(err)
}
}()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
_ = srv.Shutdown(ctx)
}