splitted Middleware.Sites into PreSetupMiddleware.PreSetup and PostSetupMiddleware.PostSetup
this fixes the problem where dependency problems are fixed
Dieser Commit ist enthalten in:
Ursprung
e47609087f
Commit
3ead80fe16
21
http.go
21
http.go
|
@ -229,9 +229,8 @@ func (s *Server) Setup() {
|
||||||
site Site
|
site Site
|
||||||
cfg string
|
cfg string
|
||||||
)
|
)
|
||||||
|
for cfg, m := range s.advmiddleware {
|
||||||
for cfg, middleware := range s.advmiddleware {
|
m.Setup(s.Conf.Middleware[cfg])
|
||||||
middleware.Setup(s.Conf.Middleware[cfg])
|
|
||||||
}
|
}
|
||||||
for cfg, site = range s.sites {
|
for cfg, site = range s.sites {
|
||||||
config := s.Conf.Sites[cfg]
|
config := s.Conf.Sites[cfg]
|
||||||
|
@ -250,12 +249,14 @@ func (s *Server) Setup() {
|
||||||
group := router.Group(config["path"].(string))
|
group := router.Group(config["path"].(string))
|
||||||
site.Init(group)
|
site.Init(group)
|
||||||
}
|
}
|
||||||
for _, middleware := range s.advmiddleware {
|
for _, m := range s.advmiddleware {
|
||||||
if err := middleware.Sites(maptoarray(s.sites)); err != nil {
|
if psm, ok := m.(middleware.PreSetupMiddleware); ok {
|
||||||
log.Error().Err(err).Msg("Failed to setup midddleware. Stopping with the setup")
|
if err := psm.PreSetup(maptoarray(s.sites)); err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to setup midddleware (pre-site-setup). Stopping with the setup")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for cfg, site = range s.sites {
|
for cfg, site = range s.sites {
|
||||||
config := s.Conf.Sites[cfg]
|
config := s.Conf.Sites[cfg]
|
||||||
if ms, ok := site.(menus.MenuSite); ok {
|
if ms, ok := site.(menus.MenuSite); ok {
|
||||||
|
@ -275,6 +276,14 @@ func (s *Server) Setup() {
|
||||||
cs.Setup(config)
|
cs.Setup(config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for _, m := range s.advmiddleware {
|
||||||
|
if psm, ok := m.(middleware.PostSetupMiddleware); ok {
|
||||||
|
if err := psm.PostSetup(maptoarray(s.sites)); err != nil {
|
||||||
|
log.Error().Err(err).Msg("Failed to setup midddleware (post-site-setup). Stopping with the setup")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
s.setup = true
|
s.setup = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ type ConnGet func(string) *pgxpool.Conn
|
||||||
|
|
||||||
var _ ConnGet = NewMiddleware().GetConn
|
var _ ConnGet = NewMiddleware().GetConn
|
||||||
var _ middleware.Middleware = &Middleware{}
|
var _ middleware.Middleware = &Middleware{}
|
||||||
|
var _ middleware.PostSetupMiddleware = &Middleware{}
|
||||||
|
|
||||||
// Middleware return a handler that sets the db into the context of every request.
|
// Middleware return a handler that sets the db into the context of every request.
|
||||||
// uri is an url in the form dbtype:connectargs
|
// uri is an url in the form dbtype:connectargs
|
||||||
|
@ -121,8 +122,8 @@ func (m *Middleware) Teardown() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sites is an function for getting the migrations of the site
|
// PostSetup is an function for getting the migrations of the site
|
||||||
func (m *Middleware) Sites(sites []any) (err error) {
|
func (m *Middleware) PostSetup(sites []any) (err error) {
|
||||||
m.lock.Lock()
|
m.lock.Lock()
|
||||||
defer m.lock.Unlock()
|
defer m.lock.Unlock()
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -64,5 +64,16 @@ type Middleware interface {
|
||||||
Defaults() Config
|
Defaults() Config
|
||||||
Setup(Config)
|
Setup(Config)
|
||||||
Teardown()
|
Teardown()
|
||||||
Sites([]any) error
|
}
|
||||||
|
|
||||||
|
// PreSetupMiddleware is for middleware that only needs the sites after their initialization
|
||||||
|
type PreSetupMiddleware interface {
|
||||||
|
Middleware
|
||||||
|
PreSetup([]any) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// PostSetupMiddleware is for middleware that requires sites to be already configured
|
||||||
|
type PostSetupMiddleware interface {
|
||||||
|
Middleware
|
||||||
|
PostSetup([]any) error
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ middleware.Middleware = &Middleware{}
|
var _ middleware.Middleware = &Middleware{}
|
||||||
|
var _ middleware.PreSetupMiddleware = &Middleware{}
|
||||||
var _ httpserver.Site = &Middleware{}
|
var _ httpserver.Site = &Middleware{}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
@ -56,8 +57,8 @@ func (*Middleware) Setup(middleware.Config) {}
|
||||||
// Teardown does nothing
|
// Teardown does nothing
|
||||||
func (*Middleware) Teardown() {}
|
func (*Middleware) Teardown() {}
|
||||||
|
|
||||||
// Sites goes through all sites and collects all registrations for wellknown uris
|
// PreSetup goes through all sites and collects all registrations for wellknown uris
|
||||||
func (m *Middleware) Sites(s []any) error {
|
func (m *Middleware) PreSetup(s []any) error {
|
||||||
for _, site := range s {
|
for _, site := range s {
|
||||||
if wfs, ok := site.(FingerSite); ok {
|
if wfs, ok := site.(FingerSite); ok {
|
||||||
for _, finger := range wfs.RegisterFingers() {
|
for _, finger := range wfs.RegisterFingers() {
|
||||||
|
|
Laden…
In neuem Issue referenzieren