From 4b9ce7b192f1fce8eada6fd3af1500704af83589 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Sun, 4 Feb 2024 22:33:06 +0600 Subject: [PATCH] :truck: Renamed Page domain back to Entry --- internal/domain/context.go | 2 +- internal/domain/entry.go | 20 ++++++++++++++++++ internal/domain/page.go | 20 ------------------ internal/entry/repository.go | 2 +- internal/entry/repository/fs/fs_page.go | 6 +++--- internal/entry/repository/fs/fs_page_test.go | 22 ++++++++++---------- internal/entry/usecase.go | 2 +- internal/entry/usecase/page_ucase.go | 2 +- internal/theme/usecase.go | 2 +- internal/theme/usecase/theme_ucase.go | 8 +++---- 10 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 internal/domain/entry.go delete mode 100644 internal/domain/page.go diff --git a/internal/domain/context.go b/internal/domain/context.go index 0e5ccba..162eab1 100644 --- a/internal/domain/context.go +++ b/internal/domain/context.go @@ -3,5 +3,5 @@ package domain // Context represent a all-in-one theme template context. type Context struct { Site *Site - *Page + Page *Entry } diff --git a/internal/domain/entry.go b/internal/domain/entry.go new file mode 100644 index 0000000..c7b6015 --- /dev/null +++ b/internal/domain/entry.go @@ -0,0 +1,20 @@ +package domain + +type Entry struct { + Language Language + Params map[string]any + File Path + Description string + Title string + Content []byte + Resources Resources + Translations []*Entry +} + +func (e Entry) IsHome() bool { + return e.File.dir == "./" && e.File.translationBaseName == "index" +} + +func (e Entry) IsTranslated() bool { + return 1 < len(e.Translations) +} diff --git a/internal/domain/page.go b/internal/domain/page.go deleted file mode 100644 index c11ddf7..0000000 --- a/internal/domain/page.go +++ /dev/null @@ -1,20 +0,0 @@ -package domain - -type Page struct { - Language Language - Params map[string]any - File Path - Description string - Title string - Content []byte - Resources Resources - Translations []*Page -} - -func (p Page) IsHome() bool { - return p.File.dir == "./" && p.File.translationBaseName == "index" -} - -func (p Page) IsTranslated() bool { - return 1 < len(p.Translations) -} diff --git a/internal/entry/repository.go b/internal/entry/repository.go index 6a3edd5..d98c578 100644 --- a/internal/entry/repository.go +++ b/internal/entry/repository.go @@ -8,7 +8,7 @@ import ( ) type Repository interface { - Get(ctx context.Context, lang domain.Language, path string) (*domain.Page, error) + Get(ctx context.Context, lang domain.Language, path string) (*domain.Entry, error) // Stat checks for the existence of a page on the specified path without // parsing its contents. diff --git a/internal/entry/repository/fs/fs_page.go b/internal/entry/repository/fs/fs_page.go index 847f19a..b48ae74 100644 --- a/internal/entry/repository/fs/fs_page.go +++ b/internal/entry/repository/fs/fs_page.go @@ -36,7 +36,7 @@ func NewFileSystemPageRepository(dir fs.FS) entry.Repository { } } -func (repo *fileSystemPageRepository) Get(ctx context.Context, lang domain.Language, p string) (*domain.Page, error) { +func (repo *fileSystemPageRepository) Get(ctx context.Context, lang domain.Language, p string) (*domain.Entry, error) { ext := ".md" if lang != domain.LanguageUnd { ext = "." + lang.Lang() + ext @@ -57,7 +57,7 @@ func (repo *fileSystemPageRepository) Get(ctx context.Context, lang domain.Langu return nil, fmt.Errorf("cannot parse entry content as FrontMatter: %w", err) } - return &domain.Page{ + return &domain.Entry{ File: domain.NewPath(target), Language: lang, Title: data.Title, @@ -65,7 +65,7 @@ func (repo *fileSystemPageRepository) Get(ctx context.Context, lang domain.Langu Description: data.Description, Params: data.Params, Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, nil } diff --git a/internal/entry/repository/fs/fs_page_test.go b/internal/entry/repository/fs/fs_page_test.go index 72f4e7f..fce68aa 100644 --- a/internal/entry/repository/fs/fs_page_test.go +++ b/internal/entry/repository/fs/fs_page_test.go @@ -27,52 +27,52 @@ func TestGet(t *testing.T) { repo := repository.NewFileSystemPageRepository(testData) for name, tc := range map[string]struct { - expect *domain.Page + expect *domain.Entry input string }{ "index": { input: path.Join("index"), - expect: &domain.Page{ + expect: &domain.Entry{ Content: []byte("index.md"), Params: make(map[string]any), Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, }, "file": { input: path.Join("file"), - expect: &domain.Page{ + expect: &domain.Entry{ Content: []byte("file.md"), Params: make(map[string]any), Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, }, "folder": { input: path.Join("folder", "index"), - expect: &domain.Page{ + expect: &domain.Entry{ Content: []byte("folder/index.md"), Params: make(map[string]any), Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, }, "both-file": { input: path.Join("both"), - expect: &domain.Page{ + expect: &domain.Entry{ Content: []byte("both.md"), Params: make(map[string]any), Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, }, "both-folder": { input: path.Join("both", "index"), - expect: &domain.Page{ + expect: &domain.Entry{ Content: []byte("both/index.md"), Params: make(map[string]any), Resources: make([]*domain.Resource, 0), - Translations: make([]*domain.Page, 0), + Translations: make([]*domain.Entry, 0), }, }, } { diff --git a/internal/entry/usecase.go b/internal/entry/usecase.go index b37631f..273888c 100644 --- a/internal/entry/usecase.go +++ b/internal/entry/usecase.go @@ -7,5 +7,5 @@ import ( ) type UseCase interface { - Do(ctx context.Context, lang domain.Language, path string) (*domain.Page, error) + Do(ctx context.Context, lang domain.Language, path string) (*domain.Entry, error) } diff --git a/internal/entry/usecase/page_ucase.go b/internal/entry/usecase/page_ucase.go index 19ce2fc..ca768e7 100644 --- a/internal/entry/usecase/page_ucase.go +++ b/internal/entry/usecase/page_ucase.go @@ -24,7 +24,7 @@ func NewEntryUseCase(entries entry.Repository, resources resource.Repository) en } } -func (ucase *entryUseCase) Do(ctx context.Context, lang domain.Language, p string) (*domain.Page, error) { +func (ucase *entryUseCase) Do(ctx context.Context, lang domain.Language, p string) (*domain.Entry, error) { targets := make([]string, 0) hasExt := path.Ext(p) != "" head, tail := urlutil.ShiftPath(p) diff --git a/internal/theme/usecase.go b/internal/theme/usecase.go index 993388a..7bd38bc 100644 --- a/internal/theme/usecase.go +++ b/internal/theme/usecase.go @@ -11,6 +11,6 @@ type ( Writer func(w io.Writer) error UseCase interface { - Do(ctx context.Context, site *domain.Site, page *domain.Page) (Writer, error) + Do(ctx context.Context, site *domain.Site, page *domain.Entry) (Writer, error) } ) diff --git a/internal/theme/usecase/theme_ucase.go b/internal/theme/usecase/theme_ucase.go index 66f0f12..2022e4c 100644 --- a/internal/theme/usecase/theme_ucase.go +++ b/internal/theme/usecase/theme_ucase.go @@ -23,16 +23,16 @@ func NewThemeUseCase(partials fs.FS, themes theme.Repository) theme.UseCase { } } -func (ucase *themeUseCase) Do(ctx context.Context, site *domain.Site, page *domain.Page) (theme.Writer, error) { - out, err := ucase.themes.Get(ctx, templateutil.New(ucase.partials, site)) +func (ucase *themeUseCase) Do(ctx context.Context, s *domain.Site, e *domain.Entry) (theme.Writer, error) { + out, err := ucase.themes.Get(ctx, templateutil.New(ucase.partials, s)) if err != nil { return nil, fmt.Errorf("cannot find theme: %w", err) } return func(w io.Writer) error { return out.Lookup("baseof.html").Execute(w, &domain.Context{ - Site: site, - Page: page, + Site: s, + Page: e, }) }, nil }