diff --git a/admin/db.go b/admin/db.go index 7c66965..9c4fd7f 100644 --- a/admin/db.go +++ b/admin/db.go @@ -8,9 +8,9 @@ import ( sq "github.com/Masterminds/squirrel" ) -func SelectTable(table string, the_type reflect.Type, limit uint64, offset uint64) ([]interface{}, error) { +func SelectTable(table string, the_type reflect.Type, limit uint64, page uint64) ([]interface{}, error) { var results []interface{} - sql_query, args, err := sq.Select("*").Limit(limit).Offset(offset).From(table).ToSql() + sql_query, args, err := sq.Select("*").Limit(limit).Offset(limit * page).From(table).ToSql() if err != nil { return results, err } rows, err := data.DB.Queryx(sql_query, args...) diff --git a/admin/handlers.go b/admin/handlers.go index b967284..f562a16 100644 --- a/admin/handlers.go +++ b/admin/handlers.go @@ -2,7 +2,6 @@ package admin import ( "maps" - "strconv" "reflect" "fmt" "github.com/gofiber/fiber/v2" @@ -23,10 +22,13 @@ func GetApiTableIndex(c *fiber.Ctx) error { func GetApiSelectAll(c *fiber.Ctx) error { table := c.Params("table") if table == "" { return c.Redirect("/admin/") } - type_is := data.Models()[table] - result, err := SelectTable(table, type_is, 20, 0); + page := c.QueryInt("page", 0) + fmt.Println("-------------------------", page) + if page < 0 { page = 0 } + + result, err := SelectTable(table, type_is, 20, uint64(page)); if err != nil { return IfErrNil(err, c) } return c.JSON(result) @@ -38,12 +40,12 @@ func GetPageSelectAll(c *fiber.Ctx) error { func GetApiSelectOne(c *fiber.Ctx) error { table := c.Params("table") - id, err := strconv.ParseInt(c.Params("id"), 10, 64) - if err != nil { return IfErrNil(err, c) } + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } type_is := data.Models()[table] - result, err := Get(table, type_is, id) + result, err := Get(table, type_is, int64(id)) if err != nil { return IfErrNil(err, c) } return c.JSON(result.Interface()) @@ -51,8 +53,8 @@ func GetApiSelectOne(c *fiber.Ctx) error { func GetPageSelectOne(c *fiber.Ctx) error { table := c.Params("table") - id, err := strconv.ParseInt(c.Params("id"), 10, 64) - if err != nil { return IfErrNil(err, c) } + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } return c.Render("admin/table/view", fiber.Map{ "Table": table, @@ -100,10 +102,10 @@ func PostApiInsert(c *fiber.Ctx) error { func DeleteApi(c *fiber.Ctx) error { table := c.Params("table") - id, err := strconv.ParseInt(c.Params("id"), 10, 64) - if err != nil { return IfErrNil(err, c) } + id, err := c.ParamsInt("id", -1) + if err != nil || id < 0 { return IfErrNil(err, c) } - err = Delete(table, id) + err = Delete(table, int64(id)) if err != nil { return IfErrNil(err, c) } return c.JSON(fiber.Map{}) diff --git a/views/admin/table/contents.html b/views/admin/table/contents.html index 8e4a873..9704049 100644 --- a/views/admin/table/contents.html +++ b/views/admin/table/contents.html @@ -1,13 +1,25 @@ -

Admin Tables

+

« Admin {{ .Table }}

- - + + + + + + + +
- - Prev - Next -