👔 Created basic site use case interface implementation
This commit is contained in:
parent
aa75f1b00e
commit
518beeeb8e
|
@ -0,0 +1,40 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"source.toby3d.me/toby3d/home/internal/domain"
|
||||
"source.toby3d.me/toby3d/home/internal/site"
|
||||
)
|
||||
|
||||
type siteUseCase struct {
|
||||
sites site.Repository
|
||||
}
|
||||
|
||||
func NewSiteUseCase(sites site.Repository) site.UseCase {
|
||||
return &siteUseCase{
|
||||
sites: sites,
|
||||
}
|
||||
}
|
||||
|
||||
func (ucase *siteUseCase) Do(ctx context.Context, lang language.Tag) (*domain.Site, error) {
|
||||
base, err := ucase.sites.Get(ctx, language.Und)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot find base site data: %w", err)
|
||||
}
|
||||
|
||||
sub, err := ucase.sites.Get(ctx, lang)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot find site data for '%s' language code: %w", lang, err)
|
||||
}
|
||||
|
||||
out := &domain.Site{Language: sub.Language}
|
||||
if sub.Title == "" {
|
||||
out.Title = base.Title
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
Loading…
Reference in New Issue