服務器狀態
This commit is contained in:
		@@ -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
									
								
							
							
						
						
									
										50
									
								
								routers/servers.go
									
									
									
									
									
										Normal 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))
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user