2023-07-15 16:19:49 +08:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"git.0x7f.app/WOJ/woj-server/internal/model"
|
2024-01-06 16:06:16 +08:00
|
|
|
"git.0x7f.app/WOJ/woj-server/pkg/file"
|
2023-07-15 16:19:49 +08:00
|
|
|
"github.com/samber/do"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ Service = (*service)(nil)
|
|
|
|
|
|
|
|
type Service interface {
|
|
|
|
GetConfig() *model.Config
|
|
|
|
HealthCheck() error
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewService(i *do.Injector) (Service, error) {
|
|
|
|
cliCtx := do.MustInvoke[*cli.Context](i)
|
|
|
|
|
2024-01-06 17:31:00 +08:00
|
|
|
data, err := file.Read(cliCtx.String("config"))
|
2023-07-15 16:19:49 +08:00
|
|
|
if err != nil {
|
|
|
|
log.Printf("Failed to setup config: %s\n", err.Error())
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
srv := &service{}
|
|
|
|
err = yaml.Unmarshal(data, &srv.conf)
|
|
|
|
if err != nil {
|
|
|
|
log.Printf("Failed to setup config: %s\n", err.Error())
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return srv, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type service struct {
|
|
|
|
conf model.Config
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *service) GetConfig() *model.Config {
|
|
|
|
return &s.conf
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *service) HealthCheck() error {
|
|
|
|
return nil
|
|
|
|
}
|