36 lines
982 B
Go
36 lines
982 B
Go
package useCases
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/localization"
|
|
"RenewCMS/internal/domain/site"
|
|
)
|
|
|
|
type GetSiteLanguagesUseCase struct {
|
|
sites site.Repository
|
|
localization localization.Repository
|
|
}
|
|
|
|
func NewGetSiteLanguagesUseCase(sites site.Repository, localization localization.Repository) *GetSiteLanguagesUseCase {
|
|
return &GetSiteLanguagesUseCase{sites, localization}
|
|
}
|
|
|
|
func (g *GetSiteLanguagesUseCase) Get(key string) (localization.View, error) {
|
|
found, err := g.sites.GetByKey(key)
|
|
if err != nil {
|
|
return localization.View{}, err
|
|
}
|
|
return readSiteLanguages(g.localization, found)
|
|
}
|
|
|
|
func readSiteLanguages(repository localization.Repository, owner site.Site) (localization.View, error) {
|
|
rows, err := repository.Rows(owner.ID)
|
|
if err != nil {
|
|
return localization.View{}, err
|
|
}
|
|
counts, err := repository.VersionCounts(owner.ID)
|
|
if err != nil {
|
|
return localization.View{}, err
|
|
}
|
|
return localization.BuildView(rows, counts, owner.Locale), nil
|
|
}
|