feat: add init
This commit is contained in:
parent
a9106ed363
commit
bcf2699feb
@ -86,16 +86,3 @@ func cleanupSentry(*cli.Context) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func PanicWrapper(f func(*cli.Context) error) func(*cli.Context) error {
|
||||
return func(c *cli.Context) error {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
sentry.CaptureException(r.(error))
|
||||
sentry.Flush(time.Second * 2)
|
||||
log.Printf("Panic Captured: %v", r)
|
||||
}
|
||||
}()
|
||||
return f(c)
|
||||
}
|
||||
}
|
||||
|
@ -18,10 +18,12 @@ import (
|
||||
"git.0x7f.app/WOJ/woj-server/internal/web/jwt"
|
||||
"git.0x7f.app/WOJ/woj-server/internal/web/metrics"
|
||||
"git.0x7f.app/WOJ/woj-server/internal/web/router"
|
||||
"github.com/getsentry/sentry-go"
|
||||
"github.com/samber/do"
|
||||
"github.com/urfave/cli/v2"
|
||||
slog "log"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@ -29,16 +31,22 @@ func main() {
|
||||
a.Usage = "woj-server"
|
||||
a.Commands = []*cli.Command{
|
||||
{
|
||||
Name: "web",
|
||||
Aliases: []string{"w"},
|
||||
Name: "server",
|
||||
Aliases: []string{"s"},
|
||||
Usage: "start web api server",
|
||||
Action: cmd.PanicWrapper(runServer),
|
||||
Action: wrap(appServer.RunServer),
|
||||
},
|
||||
{
|
||||
Name: "init",
|
||||
Aliases: []string{"i"},
|
||||
Usage: "init database",
|
||||
Action: wrap(appServer.RunServerInit),
|
||||
},
|
||||
{
|
||||
Name: "runner",
|
||||
Aliases: []string{"r"},
|
||||
Usage: "start runner",
|
||||
Action: cmd.PanicWrapper(runRunner),
|
||||
Action: wrap(appRunner.RunRunner),
|
||||
},
|
||||
}
|
||||
|
||||
@ -83,22 +91,22 @@ func prepareServices(c *cli.Context) *do.Injector {
|
||||
return injector
|
||||
}
|
||||
|
||||
func runServer(c *cli.Context) error {
|
||||
func wrap(f func(i *do.Injector) error) func(*cli.Context) error {
|
||||
return func(c *cli.Context) error {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
sentry.CaptureException(r.(error))
|
||||
sentry.Flush(time.Second * 2)
|
||||
slog.Printf("Panic Captured: %v", r)
|
||||
}
|
||||
}()
|
||||
|
||||
injector := prepareServices(c)
|
||||
|
||||
logger := do.MustInvoke[log.Service](injector)
|
||||
defer func() { _ = logger.GetRawLogger().Sync() }()
|
||||
logger.GetRawLogger().Info("starting...")
|
||||
|
||||
return appServer.RunServer(injector)
|
||||
}
|
||||
|
||||
func runRunner(c *cli.Context) error {
|
||||
injector := prepareServices(c)
|
||||
|
||||
logger := do.MustInvoke[log.Service](injector)
|
||||
defer func() { _ = logger.GetRawLogger().Sync() }()
|
||||
logger.GetRawLogger().Info("starting...")
|
||||
|
||||
return appRunner.RunRunner(injector)
|
||||
return f(injector)
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ services:
|
||||
healthcheck:
|
||||
test: [ "CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:8000/health" ]
|
||||
interval: 5s
|
||||
command: web
|
||||
command: server
|
||||
environment:
|
||||
- REDIS_ADDRESS=cache
|
||||
- DATABASE_HOST=db
|
||||
|
@ -23,6 +23,18 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func RunServerInit(i *do.Injector) error {
|
||||
slog := do.MustInvoke[log.Service](i).GetLogger("app.server")
|
||||
|
||||
// Migrate and shutdown database
|
||||
err := do.MustInvoke[db.Service](i).Close()
|
||||
if err != nil {
|
||||
slog.Warn("Database Close Failed", zap.Error(err))
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func RunServer(i *do.Injector) error {
|
||||
conf := do.MustInvoke[config.Service](i).GetConfig()
|
||||
slog := do.MustInvoke[log.Service](i).GetLogger("app.server")
|
||||
|
Loading…
Reference in New Issue
Block a user