Files
moteva/server/img_infinite_canvas.go
T

83 lines
1.8 KiB
Go
Raw Normal View History

// 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"
}
}