From 9921b1f91e71fd9b0a2122a49b032bb0402496d9 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Sun, 9 Jul 2023 21:04:59 +0200 Subject: [PATCH] WIP more types --- cmd/owl/main.go | 3 +++ domain/model/note.go | 26 +++++++++++++++++++++ domain/model/page.go | 36 +++++++++++++++++++++++++++++ domain/model/recipe.go | 39 ++++++++++++++++++++++++++++++++ render/templates/entry/Page.tmpl | 1 + 5 files changed, 105 insertions(+) create mode 100644 domain/model/note.go create mode 100644 domain/model/page.go create mode 100644 domain/model/recipe.go create mode 100644 render/templates/entry/Page.tmpl diff --git a/cmd/owl/main.go b/cmd/owl/main.go index 28519d0..4047ea0 100644 --- a/cmd/owl/main.go +++ b/cmd/owl/main.go @@ -32,6 +32,9 @@ func App(db infra.Database) *web.WebApp { registry := app.NewEntryTypeRegistry() registry.Register(&model.Image{}) registry.Register(&model.Article{}) + registry.Register(&model.Page{}) + registry.Register(&model.Recipe{}) + registry.Register(&model.Note{}) entryRepo := infra.NewEntryRepository(db, registry) binRepo := infra.NewBinaryFileRepo(db) diff --git a/domain/model/note.go b/domain/model/note.go new file mode 100644 index 0000000..f2ed50b --- /dev/null +++ b/domain/model/note.go @@ -0,0 +1,26 @@ +package model + +type Note struct { + EntryBase + meta NoteMetaData +} + +type NoteMetaData struct { + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Note) Title() string { + return "" +} + +func (e *Note) Content() EntryContent { + return EntryContent(e.meta.Content) +} + +func (e *Note) MetaData() interface{} { + return &e.meta +} + +func (e *Note) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*NoteMetaData) +} diff --git a/domain/model/page.go b/domain/model/page.go new file mode 100644 index 0000000..385d864 --- /dev/null +++ b/domain/model/page.go @@ -0,0 +1,36 @@ +package model + +import ( + "fmt" + "owl-blogs/render" +) + +type Page struct { + EntryBase + meta PageMetaData +} + +type PageMetaData struct { + Title string `owl:"inputType=text"` + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Page) Title() string { + return e.meta.Title +} + +func (e *Page) Content() EntryContent { + str, err := render.RenderTemplateToString("entry/Page", e) + if err != nil { + fmt.Println(err) + } + return EntryContent(str) +} + +func (e *Page) MetaData() interface{} { + return &e.meta +} + +func (e *Page) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*PageMetaData) +} diff --git a/domain/model/recipe.go b/domain/model/recipe.go new file mode 100644 index 0000000..ff83edb --- /dev/null +++ b/domain/model/recipe.go @@ -0,0 +1,39 @@ +package model + +import ( + "fmt" + "owl-blogs/render" +) + +type Recipe struct { + EntryBase + meta RecipeMetaData +} + +type RecipeMetaData struct { + Title string `owl:"inputType=text"` + Yield string `owl:"inputType=text"` + Duration string `owl:"inputType=text"` + Ingredients []string `owl:"inputType=text widget=textarea"` + Content string `owl:"inputType=text widget=textarea"` +} + +func (e *Recipe) Title() string { + return e.meta.Title +} + +func (e *Recipe) Content() EntryContent { + str, err := render.RenderTemplateToString("entry/Recipe", e) + if err != nil { + fmt.Println(err) + } + return EntryContent(str) +} + +func (e *Recipe) MetaData() interface{} { + return &e.meta +} + +func (e *Recipe) SetMetaData(metaData interface{}) { + e.meta = *metaData.(*RecipeMetaData) +} diff --git a/render/templates/entry/Page.tmpl b/render/templates/entry/Page.tmpl new file mode 100644 index 0000000..bac8848 --- /dev/null +++ b/render/templates/entry/Page.tmpl @@ -0,0 +1 @@ +{{.MetaData.Content}}