diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 65 |
1 files changed, 65 insertions, 0 deletions
@@ -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")) +} |
