summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..8bf3459
--- /dev/null
+++ b/main.go
@@ -0,0 +1,65 @@
+package main
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/labstack/echo/v4"
+ "gorm.io/driver/sqlite"
+ "gorm.io/gorm"
+)
+
+type Post struct {
+ CreatedAt time.Time
+ Description string
+ ImageID string
+}
+
+func main() {
+ e := echo.New()
+
+ db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})
+
+ post := Post{
+ Description: "Test image :>",
+ ImageID: "/static/firstpost.png",
+ }
+ db.AutoMigrate(Post{})
+
+ db.Create(&post)
+
+ if err != nil {
+ fmt.Errorf("opening db: %w", err)
+ }
+ e.Static("/static", "assets")
+
+ e.GET("/", func(c echo.Context) error {
+ var posts []Post
+ db.Order("created_at DESC").Limit(5).Find(&posts)
+ component := index(posts)
+ err := component.Render(c.Request().Context(), c.Response().Writer)
+ if err != nil {
+ return err
+ }
+ return nil
+ })
+
+ e.GET("/posts", func(c echo.Context) error {
+ after, err := time.Parse(time.RFC3339, c.QueryParam("after"))
+
+ if err != nil {
+ return err
+ }
+
+ var ps []Post
+ db.Order("created_at DESC").Limit(5).Where("created_at < ?", after).Find(&ps)
+ component := posts(ps)
+ err = component.Render(c.Request().Context(), c.Response().Writer)
+ if err != nil {
+ return err
+ }
+ return nil
+ })
+
+ e.Logger.Fatal(e.Start(":8080"))
+}