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")) }