♻️ Simplify server use case usage
This commit is contained in:
parent
715445ee5d
commit
b046f13098
|
@ -57,7 +57,7 @@ func NewApp(logger *log.Logger, config *domain.Config) (*App, error) {
|
|||
themer := themeucase.NewThemeUseCase(partialsDir, themes)
|
||||
pages := pagefsrepo.NewFileSystemPageRepository(contentDir)
|
||||
pager := pageucase.NewPageUseCase(pages, resources)
|
||||
serverer := servercase.NewServerUseCase()
|
||||
serverer := servercase.NewServerUseCase(sites)
|
||||
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
// INFO(toby3d): any static file is public and unprotected by design, so it's safe to search it
|
||||
// first before deep down to any page or it's resource which might be secured by middleware or
|
||||
|
@ -180,11 +180,9 @@ func NewApp(logger *log.Logger, config *domain.Config) (*App, error) {
|
|||
chain := middleware.Chain{
|
||||
middleware.LogFmt(),
|
||||
middleware.Redirect(middleware.RedirectConfig{
|
||||
Siter: siter,
|
||||
Serverer: serverer,
|
||||
}),
|
||||
middleware.Header(middleware.HeaderConfig{
|
||||
Siter: siter,
|
||||
Serverer: serverer,
|
||||
}),
|
||||
}
|
||||
|
|
|
@ -5,13 +5,11 @@ import (
|
|||
|
||||
"source.toby3d.me/toby3d/home/internal/domain"
|
||||
"source.toby3d.me/toby3d/home/internal/server"
|
||||
"source.toby3d.me/toby3d/home/internal/site"
|
||||
"source.toby3d.me/toby3d/home/internal/urlutil"
|
||||
)
|
||||
|
||||
type HeaderConfig struct {
|
||||
Skipper Skipper
|
||||
Siter site.UseCase
|
||||
Serverer server.UseCase
|
||||
}
|
||||
|
||||
|
@ -20,10 +18,6 @@ func Header(config HeaderConfig) Interceptor {
|
|||
config.Skipper = DefaultSkipper
|
||||
}
|
||||
|
||||
if config.Siter == nil {
|
||||
panic("middleware: header: Siter is nil")
|
||||
}
|
||||
|
||||
if config.Serverer == nil {
|
||||
panic("middleware: header: Serverer is nil")
|
||||
}
|
||||
|
@ -42,14 +36,7 @@ func Header(config HeaderConfig) Interceptor {
|
|||
}
|
||||
}
|
||||
|
||||
site, err := config.Siter.Do(r.Context(), lang)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
server, err := config.Serverer.Do(r.Context(), *site)
|
||||
server, err := config.Serverer.Do(r.Context(), lang)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
|
||||
|
|
|
@ -5,14 +5,12 @@ import (
|
|||
|
||||
"source.toby3d.me/toby3d/home/internal/domain"
|
||||
"source.toby3d.me/toby3d/home/internal/server"
|
||||
"source.toby3d.me/toby3d/home/internal/site"
|
||||
"source.toby3d.me/toby3d/home/internal/urlutil"
|
||||
)
|
||||
|
||||
type (
|
||||
RedirectConfig struct {
|
||||
Skipper Skipper
|
||||
Siter site.UseCase
|
||||
Serverer server.UseCase
|
||||
}
|
||||
|
||||
|
@ -28,10 +26,6 @@ func Redirect(config RedirectConfig) Interceptor {
|
|||
config.Skipper = DefaultSkipper
|
||||
}
|
||||
|
||||
if config.Siter == nil {
|
||||
panic("middleware: redirect: Siter is nil")
|
||||
}
|
||||
|
||||
if config.Serverer == nil {
|
||||
panic("middleware: redirect: Serverer is nil")
|
||||
}
|
||||
|
@ -50,14 +44,7 @@ func Redirect(config RedirectConfig) Interceptor {
|
|||
}
|
||||
}
|
||||
|
||||
site, err := config.Siter.Do(r.Context(), lang)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
server, err := config.Serverer.Do(r.Context(), *site)
|
||||
server, err := config.Serverer.Do(r.Context(), lang)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
)
|
||||
|
||||
type UseCase interface {
|
||||
Do(ctx context.Context, site domain.Site) (*domain.Server, error)
|
||||
Do(ctx context.Context, lang domain.Language) (*domain.Server, error)
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -2,21 +2,31 @@ package usecase
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"source.toby3d.me/toby3d/home/internal/domain"
|
||||
"source.toby3d.me/toby3d/home/internal/server"
|
||||
"source.toby3d.me/toby3d/home/internal/site"
|
||||
)
|
||||
|
||||
type serverUseCase struct{}
|
||||
|
||||
func NewServerUseCase() server.UseCase {
|
||||
return serverUseCase{}
|
||||
type serverUseCase struct {
|
||||
sites site.Repository
|
||||
}
|
||||
|
||||
func (serverUseCase) Do(ctx context.Context, site domain.Site) (*domain.Server, error) {
|
||||
out := domain.NewServer()
|
||||
func NewServerUseCase(sites site.Repository) server.UseCase {
|
||||
return &serverUseCase{
|
||||
sites: sites,
|
||||
}
|
||||
}
|
||||
|
||||
func (ucase *serverUseCase) Do(ctx context.Context, lang domain.Language) (*domain.Server, error) {
|
||||
site, err := ucase.sites.Get(ctx, domain.LanguageUnd)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot find base site data: %w", err)
|
||||
}
|
||||
|
||||
out := domain.NewServer()
|
||||
if site.Params == nil {
|
||||
return out, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue