feat: site languages, setup and site URL settings
This commit is contained in:
1 parent
0806733d5c
commit
d9158025d4
106 files changed
+10184
-56
No files matched your search
@@ -0,0 +1,48 @@
|
||||
package useCases
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/localization"
|
||||
"RenewCMS/internal/domain/site"
|
||||
"cmp"
|
||||
"slices"
|
||||
)
|
||||
|
||||
type GetLanguageSetupUseCase struct {
|
||||
sites site.Repository
|
||||
localization localization.Repository
|
||||
}
|
||||
|
||||
func NewGetLanguageSetupUseCase(sites site.Repository, localization localization.Repository) *GetLanguageSetupUseCase {
|
||||
return &GetLanguageSetupUseCase{sites, localization}
|
||||
}
|
||||
|
||||
func (g *GetLanguageSetupUseCase) Get() (localization.SetupView, error) {
|
||||
pending, err := pendingSites(g.sites, g.localization)
|
||||
if err != nil {
|
||||
return localization.SetupView{}, err
|
||||
}
|
||||
view := localization.SetupView{Sites: []localization.PendingSite{}, Available: localization.Available()}
|
||||
for _, found := range pending {
|
||||
view.Sites = append(view.Sites, localization.NewPendingSite(found))
|
||||
}
|
||||
return view, nil
|
||||
}
|
||||
|
||||
func pendingSites(sites site.Repository, repository localization.Repository) ([]site.Site, error) {
|
||||
all, err := sites.List()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
confirmed, err := repository.ConfirmedSites()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pending := []site.Site{}
|
||||
for _, candidate := range all {
|
||||
if !confirmed[candidate.ID] {
|
||||
pending = append(pending, candidate)
|
||||
}
|
||||
}
|
||||
slices.SortFunc(pending, func(left site.Site, right site.Site) int { return cmp.Compare(left.ID, right.ID) })
|
||||
return pending, nil
|
||||
}
|
||||
Reference in new issue
Block a user