Files
MonkeyCode/backend/cmd/server/main.go
2025-07-02 16:01:23 +08:00

76 lines
1.5 KiB
Go

package main
import (
"context"
"github.com/google/wire"
"github.com/GoYoko/web"
"github.com/chaitin/MonkeyCode/backend/config"
"github.com/chaitin/MonkeyCode/backend/docs"
"github.com/chaitin/MonkeyCode/backend/internal"
"github.com/chaitin/MonkeyCode/backend/pkg"
"github.com/chaitin/MonkeyCode/backend/pkg/service"
"github.com/chaitin/MonkeyCode/backend/pkg/store"
)
// @title MonkeyCode API
// @version 1.0
// @description MonkeyCode API
func main() {
s, err := newServer("/app/config")
if err != nil {
panic(err)
}
s.logger.With("config", s.config).Debug("config")
if s.config.Debug {
s.web.Swagger("MonkeyCode API", "/reference", string(docs.SwaggerJSON), web.WithBasicAuth("mc", "mc88"))
}
s.web.PrintRoutes()
if err := store.MigrateSQL(s.config, s.logger); err != nil {
panic(err)
}
if err := s.userV1.InitAdmin(); err != nil {
panic(err)
}
if err := s.modelV1.InitModel(); err != nil {
panic(err)
}
svc := service.NewService(service.WithPprof())
svc.Add(s)
if err := svc.Run(); err != nil {
panic(err)
}
}
// Name implements service.Servicer.
func (s *Server) Name() string {
return "Server"
}
// Start implements service.Servicer.
func (s *Server) Start() error {
return s.web.Run(s.config.Server.Http.Host)
}
// Stop implements service.Servicer.
func (s *Server) Stop() error {
return s.web.Echo().Shutdown(context.Background())
}
//lint:ignore U1000 unused for wire
var appSet = wire.NewSet(
wire.FieldsOf(new(*config.Config), "Logger"),
config.Init,
pkg.Provider,
internal.Provider,
)