diff --git a/admin/table/db.go b/admin/table/db.go index c305fb6..fa3e305 100644 --- a/admin/table/db.go +++ b/admin/table/db.go @@ -8,6 +8,20 @@ import ( sq "github.com/Masterminds/squirrel" ) +func Schema(table string) []string { + the_type := data.Models()[table] + field_num := the_type.NumField() + + fields := make([]string, 0, field_num) + + for i := 0; i < field_num; i++ { + tag := the_type.Field(i).Name + fields = append(fields, tag) + } + + return fields +} + func SearchTable(search string, table string, limit uint64, page uint64) ([]any, error) { var results []any diff --git a/admin/table/pages.go b/admin/table/pages.go index e82161c..c4beb21 100644 --- a/admin/table/pages.go +++ b/admin/table/pages.go @@ -19,10 +19,24 @@ func GetPageSelectOne(c *fiber.Ctx) error { }) } +func GetPageContent(c *fiber.Ctx) error { + _, err := AuthCheck(c, true) + if err != nil { return c.Redirect("/") } + + table := c.Params("table") + + headers := Schema(table) + + return c.Render("admin/table/contents", fiber.Map{ + "table": table, + "headers": headers, + }) +} + func SetupPages(app *fiber.App) { AddAuthedPage(app, true, "admin/table/", "admin/table/index") - AddAuthedPage(app, true, "admin/table/:table/", "admin/table/contents") AddAuthedPage(app, true, "admin/table/new/:table/", "admin/table/new") + app.Get("admin/table/:table/", GetPageContent) app.Get("/admin/table/:table/:id/", GetPageSelectOne) } diff --git a/views/admin/table/contents.html b/views/admin/table/contents.html index 27f6f0d..42ec6e3 100644 --- a/views/admin/table/contents.html +++ b/views/admin/table/contents.html @@ -1,21 +1,9 @@