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:
+21
-12
@@ -9,37 +9,46 @@ import (
|
||||
type Config struct {
|
||||
Mode string
|
||||
Host string
|
||||
|
||||
NpmCommand string
|
||||
}
|
||||
|
||||
var Slot = sl.NewSlot[Config]()
|
||||
|
||||
func setFromEnvOrDefault(target *string, m map[string]string, key string, defaultValue string) {
|
||||
v, ok := m[key]
|
||||
if ok {
|
||||
*target = v
|
||||
} else {
|
||||
*target = defaultValue
|
||||
}
|
||||
}
|
||||
|
||||
func Configure(l *sl.ServiceLocator) (Config, error) {
|
||||
m, err := godotenv.Read(".env")
|
||||
env, err := godotenv.Read(".env")
|
||||
if err != nil {
|
||||
return Config{}, err
|
||||
}
|
||||
|
||||
var cfg Config
|
||||
|
||||
cfg.Mode = "production"
|
||||
if v, ok := m["MODE"]; ok {
|
||||
cfg.Mode = v
|
||||
}
|
||||
|
||||
cfg.Host = ":4000"
|
||||
if v, ok := m["HOST"]; ok {
|
||||
cfg.Host = v
|
||||
}
|
||||
setFromEnvOrDefault(&cfg.Mode, env, "MODE", "production")
|
||||
setFromEnvOrDefault(&cfg.Host, env, "HOST", ":4000")
|
||||
setFromEnvOrDefault(&cfg.NpmCommand, env, "NPM_COMMAND", "npm")
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
var TestingProductionConfig = Config{
|
||||
var ExampleProductionConfig = Config{
|
||||
Mode: "production",
|
||||
Host: ":4000",
|
||||
|
||||
NpmCommand: "npm",
|
||||
}
|
||||
|
||||
var TestingDevelopmentConfig = Config{
|
||||
var ExampleDevelopmentConfig = Config{
|
||||
Mode: "development",
|
||||
Host: ":4000",
|
||||
|
||||
NpmCommand: "npm",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user