Have a few of the basic admin pages working after switching to the API+View pattern.
This commit is contained in:
parent
fa7f886a59
commit
2b40d6fdc3
9 changed files with 188 additions and 29 deletions
10
admin/db.go
10
admin/db.go
|
@ -8,8 +8,8 @@ import (
|
|||
sq "github.com/Masterminds/squirrel"
|
||||
)
|
||||
|
||||
func SelectTable(table string, the_type reflect.Type, limit uint64, offset uint64) ([]reflect.Value, error) {
|
||||
var results []reflect.Value
|
||||
func SelectTable(table string, the_type reflect.Type, limit uint64, offset uint64) ([]interface{}, error) {
|
||||
var results []interface{}
|
||||
sql_query, args, err := sq.Select("*").Limit(limit).Offset(offset).From(table).ToSql()
|
||||
if err != nil { return results, err }
|
||||
|
||||
|
@ -18,11 +18,11 @@ func SelectTable(table string, the_type reflect.Type, limit uint64, offset uint6
|
|||
defer rows.Close()
|
||||
|
||||
for rows.Next() {
|
||||
the_data := reflect.New(the_type)
|
||||
err = rows.StructScan(the_data.Interface())
|
||||
the_data := reflect.New(the_type).Interface()
|
||||
err = rows.StructScan(the_data)
|
||||
if err != nil { return results, err }
|
||||
|
||||
results = append(results, the_data.Elem())
|
||||
results = append(results, the_data)
|
||||
}
|
||||
|
||||
return results, rows.Err()
|
||||
|
|
|
@ -2,36 +2,85 @@ package admin
|
|||
|
||||
import (
|
||||
"maps"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"zedshaw.games/webapp/data"
|
||||
"zedshaw.games/webapp/api"
|
||||
)
|
||||
|
||||
func GetPageIndex(c *fiber.Ctx) error {
|
||||
func GetApiTableIndex(c *fiber.Ctx) error {
|
||||
var tables []string
|
||||
|
||||
for k := range maps.Keys(data.Models()) {
|
||||
tables = append(tables, k)
|
||||
}
|
||||
|
||||
return c.Render("admin/index", fiber.Map{"Tables": tables})
|
||||
return c.JSON(tables)
|
||||
}
|
||||
|
||||
func GetPageTableIndex(c *fiber.Ctx) error {
|
||||
func GetApiSelectAll(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
if table == "" { return c.Redirect("/admin/") }
|
||||
|
||||
fmt.Println("table: ", table)
|
||||
type_is := data.Models()[table]
|
||||
|
||||
result, err := SelectTable(table, type_is, 20, 0);
|
||||
if err != nil { return api.IfErrNil(err, c) }
|
||||
|
||||
return c.Render("admin/table/index", fiber.Map{"Table": result})
|
||||
return c.JSON(result)
|
||||
}
|
||||
|
||||
func GetPageSelectAll(c *fiber.Ctx) error {
|
||||
return c.Render("admin/table/contents", fiber.Map{"Table": c.Params("table")})
|
||||
}
|
||||
|
||||
func GetApiSelectOne(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
||||
if err != nil { return api.IfErrNil(err, c) }
|
||||
|
||||
type_is := data.Models()[table]
|
||||
|
||||
result, err := Get(table, type_is, id)
|
||||
if err != nil { return api.IfErrNil(err, c) }
|
||||
|
||||
return c.JSON(result.Interface())
|
||||
}
|
||||
|
||||
func GetPageSelectOne(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
||||
if err != nil { return api.IfErrNil(err, c) }
|
||||
|
||||
return c.Render("admin/table/view", fiber.Map{
|
||||
"Table": table,
|
||||
"Id": id,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
func PostApiUpdate(c *fiber.Ctx) error {
|
||||
return c.JSON(fiber.Map{})
|
||||
}
|
||||
|
||||
func PutApiInsert(c *fiber.Ctx) error {
|
||||
return c.JSON(fiber.Map{})
|
||||
}
|
||||
|
||||
func DeleteApi(c *fiber.Ctx) error {
|
||||
return c.JSON(fiber.Map{})
|
||||
}
|
||||
|
||||
func Setup(app *fiber.App) {
|
||||
app.Get("/admin/", GetPageIndex);
|
||||
app.Get("/admin/table/:table/", GetPageTableIndex);
|
||||
app.Get("/api/admin/table/", GetApiTableIndex)
|
||||
|
||||
app.Get("/api/admin/table/:table/", GetApiSelectAll)
|
||||
app.Get("/admin/table/:table/", GetPageSelectAll)
|
||||
|
||||
app.Get("/api/admin/table/:table/:id/", GetApiSelectOne)
|
||||
app.Get("/admin/table/:table/:id/", GetPageSelectOne)
|
||||
|
||||
app.Post("/api/admin/table/:table/:id/", PostApiUpdate)
|
||||
app.Put("/api/admin/table/:table/:id/", PutApiInsert)
|
||||
app.Delete("/api/admin/table/:table/:id/", DeleteApi)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue