diff options
| author | roerick <roerick@wyo.town> | 2025-10-17 15:32:19 -0600 |
|---|---|---|
| committer | roerick <roerick@wyo.town> | 2025-10-17 15:32:19 -0600 |
| commit | ce61d3db96e0539c8df1886ac635e7e85dbde31f (patch) | |
| tree | 8af7c0eda03b91273ebffbde5799e4436b04cac6 /handlers | |
initial commit, models not working
Diffstat (limited to 'handlers')
| -rw-r--r-- | handlers/handlers.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/handlers/handlers.go b/handlers/handlers.go new file mode 100644 index 0000000..777ae83 --- /dev/null +++ b/handlers/handlers.go @@ -0,0 +1,55 @@ +package handlers + +import ( + "net/http" + "fmt" + "text/template" + "github.com/gorilla/mux" + "gorm.io/driver/postgres" + "gorm.io/gorm" + "wyo.town/netzah/models" +) + +// CreateBlog displays the blog creation form +func CreateBlog(w http.ResponseWriter, r *http.Request) { + tmpl := template.Must(template.ParseFiles("templates/create_blog.html")) + tmpl.Execute(w, nil) +} + +// StoreBlog handles the form submission for creating a blog +func StoreBlog(w http.ResponseWriter, r *http.Request) { + dsn := "host=localhost user=_postgresql password=postGRES dbname=netzah port=5432 sslmode=disable TimeZone=US/Mountain client_encoding=UTF8" + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) + if err != nil { + panic("failed to connect to database") + } + + + if r.Method == http.MethodPost { + var blog models.Blog + blog.Title = r.FormValue("title") + blog.Content = r.FormValue("content") + db.Create(&blog) + http.Redirect(w, r, "/blogs/"+fmt.Sprint(blog.ID), http.StatusSeeOther) + } +} + +// GetBlog retrieves and displays a blog by ID +func GetBlog(w http.ResponseWriter, r *http.Request) { + dsn := "host=localhost user=_postgresql password=postGRES dbname=netzah port=5432 sslmode=disable TimeZone=US/Mountain client_encoding=UTF8" + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) + + if err != nil { + panic("failed to connect to database") + } + + id := mux.Vars(r)["id"] + var blog models.Blog + if err := db.First(&blog, id).Error; err != nil { + http.NotFound(w, r) + return + } + tmpl := template.Must(template.ParseFiles("templates/blog.html")) + tmpl.Execute(w, blog) +} + |
