Files
likedream/cmd/server/main.go
T
sugarBecomer 0959ca117c 🐛 学习通刷课
2025-12-19 15:47:51 +08:00

59 lines
1.2 KiB
Go

package server
import (
"context"
"likedream-goframe/internal/api"
"likedream-goframe/internal/application/filestorage"
db2 "likedream-goframe/internal/common/db"
_ "likedream-goframe/internal/ent/runtime"
"likedream-goframe/internal/framework/redis"
"likedream-goframe/internal/framework/schedule"
"os"
"os/signal"
"syscall"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func Run() {
db2.InitDB()
// 如果没有数据,进行数据初始化
if !db2.CheckHasData() {
db2.GenerateData()
}
ctx, cancel := context.WithCancel(gctx.GetInitCtx())
// 初始化
filestorage.Init(ctx)
redis.Init(ctx)
schedule.Init(ctx)
api.StartServer(ctx)
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan,
syscall.SIGINT,
syscall.SIGQUIT,
syscall.SIGTERM,
syscall.SIGABRT,
)
go func() {
sig := <-sigChan
g.Log().Info(ctx, "Received signal, shutting down...", sig)
cancel()
}()
<-ctx.Done()
g.Log().Info(ctx, "server is going to shut down...")
api.StopServer()
g.Log().Info(ctx, "api server stopped")
schedule.Stop()
g.Log().Info(ctx, "schedule stopped")
redis.Shutdown()
g.Log().Info(ctx, "redis client closed")
os.Exit(0)
}