102 lines
2.7 KiB
Go
102 lines
2.7 KiB
Go
|
package model_classes
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"strconv"
|
||
|
|
||
|
. "git.andr3h3nriqu3s.com/andr3/fyp/logic/utils"
|
||
|
)
|
||
|
|
||
|
func HandleList(handle *Handle) {
|
||
|
handle.Get("/models/data/list", func(w http.ResponseWriter, r *http.Request, c *Context) *Error {
|
||
|
if !CheckAuthLevel(1, w, r, c) {
|
||
|
return nil
|
||
|
}
|
||
|
if c.Mode == JSON {
|
||
|
panic("TODO JSON on /models/data/list")
|
||
|
}
|
||
|
|
||
|
id, err := GetIdFromUrl(r, "id")
|
||
|
if err != nil {
|
||
|
return ErrorCode(err, 400, c.AddMap(nil))
|
||
|
}
|
||
|
|
||
|
page := 0
|
||
|
if r.URL.Query().Has("page") {
|
||
|
page_url := r.URL.Query().Get("page")
|
||
|
page_url_number, err := strconv.Atoi(page_url)
|
||
|
if err != nil {
|
||
|
return ErrorCode(err, http.StatusBadRequest, c.AddMap(nil))
|
||
|
}
|
||
|
page = page_url_number
|
||
|
}
|
||
|
|
||
|
class_rows, err := handle.Db.Query("select name, model_id from model_classes where id=$1;", id)
|
||
|
if err != nil {
|
||
|
return Error500(err)
|
||
|
}
|
||
|
defer class_rows.Close()
|
||
|
|
||
|
if !class_rows.Next() {
|
||
|
return ErrorCode(nil, 404, c.AddMap(nil))
|
||
|
}
|
||
|
|
||
|
name := ""
|
||
|
model_id := ""
|
||
|
if err = class_rows.Scan(&name, &model_id); err != nil {
|
||
|
return Error500(nil)
|
||
|
}
|
||
|
|
||
|
rows, err := handle.Db.Query("select id, file_path, model_mode from model_data_point where class_id=$1 limit 10 offset $2;", id, page * 10)
|
||
|
if err != nil {
|
||
|
return Error500(err)
|
||
|
}
|
||
|
defer rows.Close()
|
||
|
|
||
|
type baserow struct {
|
||
|
Id string
|
||
|
FilePath string
|
||
|
Mode int
|
||
|
}
|
||
|
|
||
|
got := []baserow{}
|
||
|
|
||
|
for rows.Next() {
|
||
|
nrow := baserow{}
|
||
|
err = rows.Scan(&nrow.Id, &nrow.FilePath, &nrow.Mode)
|
||
|
if err != nil {
|
||
|
return Error500(err)
|
||
|
}
|
||
|
got = append(got, nrow)
|
||
|
}
|
||
|
|
||
|
rows_count, err := handle.Db.Query("select count(*) from model_data_point where class_id=$1;", id)
|
||
|
if err != nil {
|
||
|
return Error500(err)
|
||
|
}
|
||
|
defer rows_count.Close()
|
||
|
|
||
|
if !rows_count.Next() {
|
||
|
fmt.Printf("select count(*) from model_data_point where class_id='%s';\n", id)
|
||
|
return Error500(nil)
|
||
|
}
|
||
|
|
||
|
count := 0
|
||
|
err = rows_count.Scan(&count)
|
||
|
if err != nil {
|
||
|
return Error500(err)
|
||
|
}
|
||
|
|
||
|
LoadDefineTemplate(w, "/models/edit.html", "data-model-create-class-table-table", c.AddMap(AnyMap{
|
||
|
"List": got,
|
||
|
"Count": count,
|
||
|
"Page": page,
|
||
|
"Id": id,
|
||
|
"Name": name,
|
||
|
"ModelId": model_id,
|
||
|
}))
|
||
|
return nil
|
||
|
})
|
||
|
}
|