refactor: use static HIS database per instance
This commit is contained in:
@@ -22,29 +22,22 @@ func main() {
|
||||
}
|
||||
|
||||
bootstrapCtx, bootstrapCancel := context.WithTimeout(context.Background(), 20*time.Second)
|
||||
registry, err := databaseconfig.NewRegistry(bootstrapCtx, databaseconfig.Setting{
|
||||
Host: cfg.ManagementDBHost, Port: cfg.ManagementDBPort, Database: cfg.ManagementDBDatabase,
|
||||
Username: cfg.ManagementDBUsername, Password: cfg.ManagementDBPassword,
|
||||
resolver, err := databaseconfig.NewStaticResolver(bootstrapCtx, cfg.RSCode, databaseconfig.Setting{
|
||||
Host: cfg.HISDBHost, Port: cfg.HISDBPort, Database: cfg.HISDBDatabase,
|
||||
Username: cfg.HISDBUsername, Password: cfg.HISDBPassword,
|
||||
}, databaseconfig.PoolConfig{
|
||||
MaxOpenConns: cfg.DBMaxOpenConns, MaxIdleConns: cfg.DBMaxIdleConns,
|
||||
ConnMaxLifetime: cfg.DBConnMaxLifetime,
|
||||
}, cfg.DBCredentialSecret)
|
||||
})
|
||||
bootstrapCancel()
|
||||
if err != nil {
|
||||
log.Fatalf("load database registry: %v", err)
|
||||
log.Fatalf("load database HIS: %v", err)
|
||||
}
|
||||
defer registry.Close()
|
||||
defer resolver.Close()
|
||||
|
||||
handler := apphttp.NewDynamicHandler()
|
||||
settingsHandler := apphttp.NewDatabaseSettingsHandler(registry)
|
||||
handler := apphttp.NewDynamicHandler(cfg.RSCode)
|
||||
protected := func(handler http.Handler) http.Handler {
|
||||
return apphttp.BearerAuth(cfg.BearerToken, apphttp.SelectDatabase(registry, handler))
|
||||
}
|
||||
adminProtected := func(handler http.Handler) http.Handler {
|
||||
return apphttp.BearerAuth(cfg.DBSettingsToken, handler)
|
||||
}
|
||||
catalogProtected := func(handler http.Handler) http.Handler {
|
||||
return apphttp.BearerAuth(cfg.BearerToken, handler)
|
||||
return apphttp.BearerAuth(cfg.BearerToken, apphttp.SelectDatabase(resolver, handler))
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
@@ -64,10 +57,6 @@ func main() {
|
||||
mux.Handle("POST /api/cpone/patients/lab-registration/{regId}/services", protected(http.HandlerFunc(handler.AddLabServices)))
|
||||
mux.Handle("POST /api/cpone/patients/lab-registration/{regId}/packages", protected(http.HandlerFunc(handler.AddLabPackage)))
|
||||
mux.Handle("GET /api/cpone/patients/lab-results/{labNumber}", protected(http.HandlerFunc(handler.GetLabResult)))
|
||||
mux.Handle("GET /api/cpone/database-settings", adminProtected(http.HandlerFunc(settingsHandler.List)))
|
||||
mux.Handle("GET /api/cpone/database-settings/{kodeRs}", adminProtected(http.HandlerFunc(settingsHandler.Get)))
|
||||
mux.Handle("POST /api/cpone/database-settings", adminProtected(http.HandlerFunc(settingsHandler.Store)))
|
||||
mux.Handle("GET /api/cpone/hospitals", catalogProtected(http.HandlerFunc(settingsHandler.ListHospitals)))
|
||||
mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
|
||||
Reference in New Issue
Block a user