package usecase import ( "context" "fmt" "golang.org/x/text/language" "source.toby3d.me/toby3d/home/internal/domain" "source.toby3d.me/toby3d/home/internal/site" "source.toby3d.me/toby3d/home/internal/static" ) type siteUseCase struct { sites site.Repository statics static.Repository } func NewSiteUseCase(sites site.Repository, statics static.Repository) site.UseCase { return &siteUseCase{ sites: sites, statics: statics, } } func (ucase *siteUseCase) Do(ctx context.Context, lang language.Tag) (*domain.Site, error) { out, err := ucase.sites.Get(ctx, language.Und) if err != nil { return nil, fmt.Errorf("cannot find base site data: %w", err) } out.Resources, _, _ = ucase.statics.Fetch(ctx, "") sub, err := ucase.sites.Get(ctx, lang) if err != nil { return out, nil } out.Language = sub.Language for k, v := range sub.Params { out.Params[k] = v } return out, nil }