服務器狀態

This commit is contained in:
2023-04-29 19:16:03 +08:00
parent 247ab20966
commit 69973202e0
5 changed files with 266 additions and 27 deletions

View File

@@ -81,18 +81,44 @@ func ModelItemGet(w http.ResponseWriter, r *http.Request) {
}
func ModelItemPatch(w http.ResponseWriter, r *http.Request) {
var model models.Model
// 取出原始数据
model := models.Model{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
if err := model.Get(); err != nil {
w.WriteHeader(http.StatusNotFound)
return
}
// 取出更新数据
var model_new models.Model
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err)
return
}
defer r.Body.Close()
if err = json.Unmarshal(body, &model); err != nil {
if err = json.Unmarshal(body, &model_new); err != nil {
log.Println(err)
return
}
model.ID = utils.ParamInt(mux.Vars(r)["id"], 0)
// 字段不爲空且不等於原始數據時更新
if model_new.Name != "" && model_new.Name != model.Name {
model.Name = model_new.Name
}
if model_new.Type != "" && model_new.Type != model.Type {
model.Type = model_new.Type
}
if model_new.Status != "" && model_new.Status != model.Status {
model.Status = model_new.Status
// 如果狀態被改變爲 ready, 將模型發送到訓練隊列
if model.Status == "ready" {
model.SendToTrain()
}
}
if model_new.Image != "" && model_new.Image != model.Image {
model.Image = model_new.Image
}
model.Update()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(model))

50
routers/servers.go Normal file
View File

@@ -0,0 +1,50 @@
package routers
import (
"main/models"
"main/utils"
"net/http"
"github.com/gorilla/mux"
)
func ServersGet(w http.ResponseWriter, r *http.Request) {
var listview models.ListView
listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1)
listview.PageSize = utils.ParamInt(r.URL.Query().Get("pageSize"), 10)
listview.List = models.QueryServers(listview.Page, listview.PageSize)
listview.Total = models.CountServers()
listview.Next = listview.Page*listview.PageSize < listview.Total
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(listview.ToJSON())
}
func ServersPost(w http.ResponseWriter, r *http.Request) {
var server models.Server
server.Create()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(server))
}
func ServersItemGet(w http.ResponseWriter, r *http.Request) {
server := models.Server{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
server.Get()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(server))
}
func ServersItemPatch(w http.ResponseWriter, r *http.Request) {
server := models.Server{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
server.Get()
server.Update()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(server))
}
func ServersItemDelete(w http.ResponseWriter, r *http.Request) {
server := models.Server{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
server.Get()
server.Delete()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(server))
}