59 lines
1.2 KiB
Go
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)
|
|
}
|