83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
|
|
// Code scaffolded by goctl. Safe to edit.
|
||
|
|
// goctl 1.10.1
|
||
|
|
|
||
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"flag"
|
||
|
|
"fmt"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"img_infinite_canvas/internal/config"
|
||
|
|
"img_infinite_canvas/internal/errorx"
|
||
|
|
"img_infinite_canvas/internal/handler"
|
||
|
|
"img_infinite_canvas/internal/svc"
|
||
|
|
|
||
|
|
"github.com/zeromicro/go-zero/core/conf"
|
||
|
|
"github.com/zeromicro/go-zero/core/logx"
|
||
|
|
"github.com/zeromicro/go-zero/rest"
|
||
|
|
"github.com/zeromicro/go-zero/rest/httpx"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
configFile = flag.String("f", "etc/config.yaml", "the config file")
|
||
|
|
runMode = flag.String("mode", "all", "process mode: api, worker, or all")
|
||
|
|
)
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
flag.Parse()
|
||
|
|
|
||
|
|
var c config.Config
|
||
|
|
conf.MustLoad(*configFile, &c)
|
||
|
|
httpx.SetErrorHandlerCtx(errorx.Handle)
|
||
|
|
|
||
|
|
ctx := svc.NewServiceContext(c)
|
||
|
|
defer ctx.Close()
|
||
|
|
|
||
|
|
mode := normalizeRunMode(*runMode)
|
||
|
|
if mode == "worker" {
|
||
|
|
if !ctx.HasJobWorker() {
|
||
|
|
logx.Must(fmt.Errorf("job worker is disabled by JobQueue.Driver"))
|
||
|
|
}
|
||
|
|
fmt.Println("Starting job worker...")
|
||
|
|
if err := ctx.RunJobWorker(); err != nil {
|
||
|
|
logx.Must(err)
|
||
|
|
}
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if mode == "all" {
|
||
|
|
if err := ctx.StartJobWorker(); err != nil {
|
||
|
|
logx.Must(err)
|
||
|
|
}
|
||
|
|
defer ctx.ShutdownJobWorker()
|
||
|
|
}
|
||
|
|
if err := ctx.StartOutboxPublisher(); err != nil {
|
||
|
|
logx.Must(err)
|
||
|
|
}
|
||
|
|
defer ctx.ShutdownOutboxPublisher()
|
||
|
|
|
||
|
|
server := rest.MustNewServer(c.RestConf)
|
||
|
|
defer server.Stop()
|
||
|
|
server.Use(handler.UserContextMiddleware(ctx.AuthService))
|
||
|
|
handler.RegisterHandlers(server, ctx)
|
||
|
|
handler.RegisterV1Handlers(server, ctx)
|
||
|
|
|
||
|
|
fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port)
|
||
|
|
server.Start()
|
||
|
|
}
|
||
|
|
|
||
|
|
func normalizeRunMode(mode string) string {
|
||
|
|
switch strings.ToLower(strings.TrimSpace(mode)) {
|
||
|
|
case "", "all":
|
||
|
|
return "all"
|
||
|
|
case "api":
|
||
|
|
return "api"
|
||
|
|
case "worker":
|
||
|
|
return "worker"
|
||
|
|
default:
|
||
|
|
logx.Must(fmt.Errorf("unsupported process mode %q", mode))
|
||
|
|
return "all"
|
||
|
|
}
|
||
|
|
}
|