diff --git a/models/Model.go b/models/Model.go index 4f5de41..a4787a3 100644 --- a/models/Model.go +++ b/models/Model.go @@ -16,6 +16,7 @@ type Model struct { Status string `json:"status" default:"initial"` // (initial|ready|waiting|running|success|error) Progress int `json:"progress"` // (0-100) Image string `json:"image"` // 封面圖片實際地址 + Hash string `json:"hash"` // 模型哈希值 Tags string `json:"tags"` UserID int `json:"user_id"` CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` diff --git a/models/Server.go b/models/Server.go index 1f3c787..f18ad90 100644 --- a/models/Server.go +++ b/models/Server.go @@ -6,16 +6,17 @@ import ( ) type Server struct { - ID int `json:"id" gorm:"primary_key"` - Name string `json:"name"` - Type string `json:"type"` // (訓練|推理) - IP string `json:"ip"` - Port int `json:"port"` - Status string `json:"status"` // (異常|初始化|就緒|工作中|關閉中) - Username string `json:"username"` - Password string `json:"password"` - CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` - UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` + ID int `json:"id" gorm:"primary_key"` + Name string `json:"name"` + Type string `json:"type"` // (訓練|推理) + IP string `json:"ip"` + Port int `json:"port"` + Status string `json:"status"` // (異常|初始化|就緒|工作中|關閉中) + Username string `json:"username"` + Password string `json:"password"` + Models []map[string]interface{} `json:"models" gorm:"-"` // 數據庫不必保存 + CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"` + UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"` } func init() { diff --git a/routers/servers.go b/routers/servers.go index 4b19044..dbb2b22 100644 --- a/routers/servers.go +++ b/routers/servers.go @@ -28,6 +28,18 @@ func ServersGet(w http.ResponseWriter, r *http.Request) { } else { server.Status = "正常" } + // 讀取模型信息 + resp, err = http.Get(fmt.Sprintf("http://%s:%d/sdapi/v1/sd-models", server.IP, server.Port)) + if err != nil || resp.StatusCode != http.StatusOK { + } else { + var models []map[string]interface{} + body, _ := ioutil.ReadAll(resp.Body) + defer resp.Body.Close() + if err := json.Unmarshal(body, &models); err != nil { + server.Models = []map[string]interface{}{} + } + server.Models = models + } listview.List = append(listview.List, server) } listview.Next = listview.Page*listview.PageSize < int(listview.Total)