chore: refactored sl and added an hooks system
modified: cmd/dev-server/main.go, cmd/server/main.go
Aggiornati per utilizzare il nuovo sistema degli hooks, ora nei "main" vanno
solo chiamate "ProvideValue", "Provide" e "ProvideHook" ed una finale
di "Invoke" o "Use". Mentre nei vari servizi vanno solo chiamate "Use"
o "UseHook"
modified: libs/sl/sl.go
Rinominati "InjectValue" e "InjectLazy" a "Provide" e "ProvideFunc", altro
refactor di varie cose ed aggiunto il concetto degli hook per poter
iniettare anche più di un servizio dentro un altro in un preciso ordine.
modified: server/config/config.go
Lieve refactor ed aggiunta la variabile "NPM_COMMAND" configurabile per la
fase di development.
modified: server/listautenti/listautenti.go
Ora questo è un vero e proprio servizio "state-less", fornisce solo una
funzione che monta tutte le route necessarie a questo servizio. Più avanti
dipenderà da LDAP quindi forse sarà leggermente più complicato.
modified: server/listautenti/listautenti_test.go
Aggiornato questo test, ora usa il nuovo sistema e funge di nuovo.
deleted: server/routes/routes.go
Il sistema degli hook è stato introdotto anche per semplificare questa cosa
che ora infatti non serve più.
modified: server/server.go
Ora il server non chiama più "InjectValue" con i sotto-router ma espone solo
un hook che passa i sotto router come parametri, in questo modo è più
facile aggiungere e togliere servizi direttamente alla radice quando viene
configurata tutta l'applicazione.
This commit is contained in:
+20
-12
@@ -24,9 +24,15 @@ func init() {
|
||||
func main() {
|
||||
l := sl.New()
|
||||
|
||||
cfg := sl.InjectValue(l, config.Slot, config.TestingDevelopmentConfig)
|
||||
//
|
||||
// Setup the application
|
||||
//
|
||||
|
||||
sl.InjectValue[database.Database](l, database.Slot, &database.Memory{
|
||||
// Config
|
||||
sl.ProvideFunc(l, config.Slot, config.Configure)
|
||||
|
||||
// Database
|
||||
sl.Provide[database.Database](l, database.Slot, &database.Memory{
|
||||
Users: []model.User{
|
||||
{
|
||||
Id: "e39ad8d5-a087-4cb2-8fd7-5a6ca3f6a534",
|
||||
@@ -43,21 +49,23 @@ func main() {
|
||||
},
|
||||
})
|
||||
|
||||
sl.InjectLazy(l, server.Slot, server.Configure)
|
||||
sl.InjectLazy(l, listautenti.Slot, listautenti.Configure)
|
||||
// Server
|
||||
sl.ProvideFunc(l, server.Slot, server.Configure)
|
||||
sl.ProvideHook(l, server.ApiRoutesHook,
|
||||
listautenti.MountApiRoutesHook,
|
||||
)
|
||||
|
||||
srv, err := sl.Use(l, server.Slot)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
//
|
||||
// Start the application
|
||||
//
|
||||
|
||||
go func() {
|
||||
log.Fatal(srv.Router.Listen(cfg.Host))
|
||||
}()
|
||||
sl.MustInvoke(l, server.Slot)
|
||||
|
||||
r, w := io.Pipe()
|
||||
|
||||
cmd := exec.Command("pnpm", "run", "dev")
|
||||
cfg := sl.MustUse(l, config.Slot)
|
||||
|
||||
cmd := exec.Command(cfg.NpmCommand, "run", "dev")
|
||||
cmd.Stdout = w
|
||||
|
||||
go func() {
|
||||
|
||||
Reference in New Issue
Block a user