feat: moved files into a better position for organization closes #8
This commit is contained in:
107
logic/models/delete.go
Normal file
107
logic/models/delete.go
Normal file
@@ -0,0 +1,107 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
|
||||
. "git.andr3h3nriqu3s.com/andr3/fyp/logic/utils"
|
||||
)
|
||||
|
||||
func deleteModel(handle *Handle, id string, w http.ResponseWriter, c *Context, model BaseModel) {
|
||||
fmt.Printf("Removing model with id: %s\n", id)
|
||||
_, err := handle.Db.Exec("delete from models where id=$1;", id)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
panic("TODO handle better deleteModel failed delete database query")
|
||||
}
|
||||
|
||||
model_path := path.Join("./savedData", id)
|
||||
fmt.Printf("Removing folder of model with id: %s at %s\n", id, model_path)
|
||||
err = os.RemoveAll(model_path)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
panic("TODO handle better deleteModel failed to delete folder")
|
||||
}
|
||||
|
||||
if c.Mode == HTML {
|
||||
// TODO move this to a constant so i don't forget
|
||||
w.WriteHeader(309)
|
||||
c.Mode = HTMLFULL
|
||||
}
|
||||
|
||||
LoadBasedOnAnswer(c.Mode, w, "/models/delete.html", c.AddMap(AnyMap{
|
||||
"Model": model,
|
||||
}))
|
||||
}
|
||||
|
||||
func handleDelete(handle *Handle) {
|
||||
handle.Delete("/models/delete", func(w http.ResponseWriter, r *http.Request, c *Context) *Error {
|
||||
if c.Mode == JSON {
|
||||
panic("TODO handle json on models/delete")
|
||||
}
|
||||
|
||||
f, err := MyParseForm(r)
|
||||
if err != nil {
|
||||
return ErrorCode(err, 400, nil)
|
||||
}
|
||||
|
||||
if !CheckId(f, "id") {
|
||||
return ErrorCode(nil, http.StatusNotFound, AnyMap{
|
||||
"NotFoundMessage": "Model not found",
|
||||
"GoBackLink": "/models",
|
||||
})
|
||||
}
|
||||
|
||||
id := f.Get("id")
|
||||
|
||||
// TODO handle admin users
|
||||
rows, err := handle.Db.Query("select name, status from models where id=$1 and user_id=$2;", id, c.User.Id)
|
||||
if err != nil {
|
||||
return Error500(err)
|
||||
}
|
||||
|
||||
if !rows.Next() {
|
||||
return ErrorCode(nil, http.StatusNotFound, AnyMap{
|
||||
"NotFoundMessage": "Model not found",
|
||||
"GoBackLink": "/models",
|
||||
})
|
||||
}
|
||||
|
||||
var model BaseModel = BaseModel{}
|
||||
model.Id = id
|
||||
|
||||
err = rows.Scan(&model.Name, &model.Status)
|
||||
if err != nil {
|
||||
return Error500(err)
|
||||
}
|
||||
|
||||
switch model.Status {
|
||||
case FAILED_PREPARING:
|
||||
deleteModel(handle, id, w, c, model)
|
||||
return nil
|
||||
case CONFIRM_PRE_TRAINING:
|
||||
|
||||
if CheckEmpty(f, "name") {
|
||||
// TODO improve result
|
||||
return ErrorCode(nil, http.StatusBadRequest, nil)
|
||||
}
|
||||
|
||||
name := f.Get("name")
|
||||
if name != model.Name {
|
||||
LoadError(w, "/models/edit.html", "delete-model-card", c.AddMap(AnyMap{
|
||||
"NameDoesNotMatch": true,
|
||||
"Model": model,
|
||||
}))
|
||||
return nil
|
||||
}
|
||||
|
||||
deleteModel(handle, id, w, c, model)
|
||||
return nil
|
||||
default:
|
||||
panic("Do not know how to handle model in status:" + strconv.Itoa(model.Status))
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user