36 lines
965 B
Go
36 lines
965 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.ID)
|
|
}
|
|
|
|
func readSiteLanguages(repository localization.Repository, siteID uint32) (localization.View, error) {
|
|
rows, err := repository.Rows(siteID)
|
|
if err != nil {
|
|
return localization.View{}, err
|
|
}
|
|
counts, err := repository.VersionCounts(siteID)
|
|
if err != nil {
|
|
return localization.View{}, err
|
|
}
|
|
return localization.BuildView(rows, counts), nil
|
|
}
|