👔 Use static repository in Page use case implementation

This commit is contained in:
Maxim Lebedev 2023-11-09 06:52:15 +06:00
parent 0fff9a10d9
commit d42b96607b
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
2 changed files with 21 additions and 4 deletions

View File

@ -4,21 +4,25 @@ import (
"context"
"fmt"
"path"
"slices"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
"source.toby3d.me/toby3d/home/internal/page"
"source.toby3d.me/toby3d/home/internal/static"
"source.toby3d.me/toby3d/home/internal/urlutil"
)
type pageUseCase struct {
pages page.Repository
pages page.Repository
statics static.Repository
}
func NewPageUseCase(pages page.Repository) page.UseCase {
func NewPageUseCase(pages page.Repository, statics static.Repository) page.UseCase {
return &pageUseCase{
pages: pages,
pages: pages,
statics: statics,
}
}
@ -46,6 +50,18 @@ func (ucase *pageUseCase) Do(ctx context.Context, lang language.Tag, p string) (
continue
}
if out.Files, _, err = ucase.statics.Fetch(ctx, path.Dir(targets[i])); err != nil {
return out, nil
}
for j := range out.Files {
if ext := out.Files[j].Ext(); ext != ".html" && ext != ".md" {
continue
}
out.Files = slices.Delete(out.Files, j, j+1)
}
return out, nil
}

View File

@ -11,6 +11,7 @@ import (
pagefsrepo "source.toby3d.me/toby3d/home/internal/page/repository/fs"
"source.toby3d.me/toby3d/home/internal/page/usecase"
"source.toby3d.me/toby3d/home/internal/static"
)
func TestDo(t *testing.T) {
@ -24,7 +25,7 @@ func TestDo(t *testing.T) {
filepath.Join("index.md"): &fstest.MapFile{Data: []byte(`index.md`)},
})
ucase := usecase.NewPageUseCase(pages)
ucase := usecase.NewPageUseCase(pages, static.NewDummyRepository())
for name, tc := range map[string]struct {
input string