From d6617cec021a2a9a9ad3855f199dd5a0177a524c Mon Sep 17 00:00:00 2001 From: adminoo Date: Tue, 3 Feb 2026 09:04:11 +0100 Subject: [PATCH] feat: metadata draft --- internal/note/note.go | 9 ++++-- internal/render/render.go | 5 +++- internal/render/render_test.go | 2 ++ internal/web/handler.go | 2 ++ internal/web/templates/index.tmpl | 41 +------------------------- internal/web/templates/metadata.tmpl | 43 ++++++++++++++++++++++++++++ internal/web/templates/noteList.tmpl | 1 - 7 files changed, 58 insertions(+), 45 deletions(-) create mode 100644 internal/web/templates/metadata.tmpl diff --git a/internal/note/note.go b/internal/note/note.go index 62c4d4d..e22179a 100644 --- a/internal/note/note.go +++ b/internal/note/note.go @@ -12,11 +12,10 @@ type Note struct { Path string Title string Content string + Size int64 // HTMLContent string - ModTime time.Time // Directly in Note Tags []string - CreatedAt time.Time UpdatedAt time.Time Published bool } @@ -25,8 +24,12 @@ func NewNote() *Note { return &Note{} } +func formatDateRep(date time.Time) string { + return date.Format("2006-01-02 15:04:05") +} + func (n *Note) GetUpdateDateRep() string { - return n.UpdatedAt.Format("2006-01-02 15:04:05") + return formatDateRep(n.UpdatedAt) } // ExtractTitle return the first level heading content ('# title') diff --git a/internal/render/render.go b/internal/render/render.go index a2dd740..639e08e 100644 --- a/internal/render/render.go +++ b/internal/render/render.go @@ -67,7 +67,7 @@ func (tm *TemplateManager) GetTemplate(td *TemplateData) (*template.Template, er return tmpl, nil } -func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data interface{}) error { +func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data any) error { // Build the template files - include all necessary templates var files []string @@ -77,6 +77,9 @@ func (tm *TemplateManager) Render(w http.ResponseWriter, name string, data inter // Include noteList template (used by index) files = append(files, tm.buildTemplatePath("noteList")) + // Include metadata template + files = append(files, tm.buildTemplatePath("metadata")) + // Add the specific template files = append(files, tm.buildTemplatePath(name)) diff --git a/internal/render/render_test.go b/internal/render/render_test.go index 1158653..deed064 100644 --- a/internal/render/render_test.go +++ b/internal/render/render_test.go @@ -100,6 +100,7 @@ func TestTemplateManagerRender(t *testing.T) { writeTemplate(t, baseDir, "base.tmpl", `{{ define "base" }}{{ template "content" . }}{{ end }}`) writeTemplate(t, baseDir, "noteList.tmpl", `{{ define "noteList" }}notes{{ end }}`) writeTemplate(t, baseDir, "index.tmpl", `{{ define "content" }}hello{{ end }}`) + writeTemplate(t, baseDir, "metadata.tmpl", `{{ define "noteList" }}notes{{ end }}`) tm := NewTemplateManager(baseDir) rec := httptest.NewRecorder() @@ -126,6 +127,7 @@ func TestTemplateManagerRender_MissingTemplate(t *testing.T) { baseDir := t.TempDir() writeTemplate(t, baseDir, "base.tmpl", `{{ define "base" }}{{ template "content" . }}{{ end }}`) writeTemplate(t, baseDir, "noteList.tmpl", `{{ define "noteList" }}notes{{ end }}`) + writeTemplate(t, baseDir, "metadata.tmpl", `{{ define "noteList" }}notes{{ end }}`) tm := NewTemplateManager(baseDir) rec := httptest.NewRecorder() diff --git a/internal/web/handler.go b/internal/web/handler.go index 3572aa8..1c11ff4 100644 --- a/internal/web/handler.go +++ b/internal/web/handler.go @@ -45,6 +45,7 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // ViewState is built per-request, not shared type ViewState struct { Notes []*note.Note + Note *note.Note RenderedNote template.HTML SortBy string SearchTerm string @@ -153,6 +154,7 @@ func (h *Handler) handleNotes(w http.ResponseWriter, r *http.Request) { } // Add to state + state.Note = note state.RenderedNote = htmlContent state.LastActive = hash diff --git a/internal/web/templates/index.tmpl b/internal/web/templates/index.tmpl index 1e02112..6b42128 100644 --- a/internal/web/templates/index.tmpl +++ b/internal/web/templates/index.tmpl @@ -5,44 +5,5 @@
{{ .RenderedNote }}
- + {{ template "metadata" . }} {{ end }} diff --git a/internal/web/templates/metadata.tmpl b/internal/web/templates/metadata.tmpl new file mode 100644 index 0000000..a9ab09d --- /dev/null +++ b/internal/web/templates/metadata.tmpl @@ -0,0 +1,43 @@ +{{ define "metadata" }} + +{{ if .RenderedNote }} + +{{ end }} +{{ end }} diff --git a/internal/web/templates/noteList.tmpl b/internal/web/templates/noteList.tmpl index e9d24e0..3d23c1e 100644 --- a/internal/web/templates/noteList.tmpl +++ b/internal/web/templates/noteList.tmpl @@ -27,7 +27,6 @@ {{ range .Notes }}
  • {{ .GetUpdateDateRep }}