From 835fcae723339a4069f6d7a3fa7e60db8252e574 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=9C=E8=8F=AF?= Date: Tue, 16 May 2023 05:44:54 +0800 Subject: [PATCH] patch datasets --- routers/{dataset.go => datasets.go} | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) rename routers/{dataset.go => datasets.go} (80%) diff --git a/routers/dataset.go b/routers/datasets.go similarity index 80% rename from routers/dataset.go rename to routers/datasets.go index 2308fe0..a2bfa00 100644 --- a/routers/dataset.go +++ b/routers/datasets.go @@ -26,6 +26,7 @@ func init() { configs.ORMDB().AutoMigrate(&Dataset{}) } +// 獲取數據集列表 func DatasetsGet(w http.ResponseWriter, r *http.Request) { var listview models.ListView listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1) @@ -41,6 +42,7 @@ func DatasetsGet(w http.ResponseWriter, r *http.Request) { listview.WriteJSON(w) } +// 新增數據集 func DatasetsPost(w http.ResponseWriter, r *http.Request) { models.AccountRead(w, r, func(account *models.Account) { var dataset Dataset @@ -79,7 +81,36 @@ func DatasetsItemGet(w http.ResponseWriter, r *http.Request) { w.Write(utils.ToJSON(dataset)) } +// 修改數據集 func DatasetsItemPatch(w http.ResponseWriter, r *http.Request) { + models.AccountRead(w, r, func(account *models.Account) { + var dataset Dataset = Dataset{ID: utils.ParamInt(mux.Vars(r)["dataset_id"], 0)} + if err := configs.ORMDB().Find(&dataset).Error; err != nil { + w.WriteHeader(http.StatusNotFound) + w.Write([]byte("404 - Not Found")) + return + } + if dataset.UserID != account.ID && !account.Admin { + w.WriteHeader(http.StatusForbidden) + w.Write([]byte("403 - Forbidden")) + return + } + var form map[string]interface{} = utils.BodyRead(r) + if name, ok := form["name"].(string); ok { + dataset.Name = name + } + if info, ok := form["info"].(string); ok { + dataset.Info = info + } + if err := configs.ORMDB().Save(&dataset).Error; err != nil { + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte("500 - Internal Server Error")) + return + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Write(utils.ToJSON(dataset)) + }) + dataset := Dataset{ID: utils.ParamInt(mux.Vars(r)["dataset_id"], 0)} // 取出更新数据 var dataset_new Dataset