合併
This commit is contained in:
@@ -38,6 +38,7 @@ POST | /api/{name} | 篩選:創建新對象
|
|||||||
- [ ] /api/models/{model_id} [#模型詳情](#模型詳情)
|
- [ ] /api/models/{model_id} [#模型詳情](#模型詳情)
|
||||||
- [ ] /api/images/{image_id} [#圖片詳情](#圖片詳情)
|
- [ ] /api/images/{image_id} [#圖片詳情](#圖片詳情)
|
||||||
- [ ] /api/params/{params_id} [#參數詳情](#參數詳情)
|
- [ ] /api/params/{params_id} [#參數詳情](#參數詳情)
|
||||||
|
- [ ] /api/server/{server_id} [#服務詳情](#服務詳情)
|
||||||
|
|
||||||
詳情接口-請求方式:
|
詳情接口-請求方式:
|
||||||
|
|
||||||
|
@@ -61,7 +61,9 @@ func init() {
|
|||||||
CREATE TABLE IF NOT EXISTS users(
|
CREATE TABLE IF NOT EXISTS users(
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT,
|
name TEXT,
|
||||||
|
email TEXT,
|
||||||
password TEXT,
|
password TEXT,
|
||||||
|
slat TEXT,
|
||||||
created_at TEXT,
|
created_at TEXT,
|
||||||
updated_at TEXT
|
updated_at TEXT
|
||||||
);
|
);
|
||||||
|
@@ -8,6 +8,7 @@ import (
|
|||||||
type Server struct {
|
type Server struct {
|
||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"` // (訓練|推理)
|
||||||
IP string `json:"ip"`
|
IP string `json:"ip"`
|
||||||
Port int `json:"port"`
|
Port int `json:"port"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
@@ -3,6 +3,9 @@ package models
|
|||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"main/configs"
|
"main/configs"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Task struct {
|
type Task struct {
|
||||||
@@ -16,6 +19,49 @@ type Task struct {
|
|||||||
UserID int `json:"user_id"`
|
UserID int `json:"user_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 推理任務
|
||||||
|
func startInferenceTask(task *Task) {
|
||||||
|
|
||||||
|
// 獲取一臺可用的 GPU 資源
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// 執行推理任務
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// 更新任務狀態
|
||||||
|
task.Status = "running"
|
||||||
|
task.Progress = 0
|
||||||
|
task.Update()
|
||||||
|
|
||||||
|
// 監聽任務狀態
|
||||||
|
for {
|
||||||
|
// 延遲 1 秒
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
|
||||||
|
// 查詢任務狀態
|
||||||
|
resp, err := http.Get("http://localhost:5000/api/v1/tasks/" + strconv.Itoa(task.ID))
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// 解析任務狀態
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// 更新任務狀態
|
||||||
|
task.Progress = 100
|
||||||
|
task.Status = "success"
|
||||||
|
task.Update()
|
||||||
|
|
||||||
|
// 任務結束判定
|
||||||
|
if task.Progress == 100 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (task *Task) Create() error {
|
func (task *Task) Create() error {
|
||||||
db, err := configs.GetDB()
|
db, err := configs.GetDB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -9,6 +9,8 @@ type User struct {
|
|||||||
ID int `json:"id"`
|
ID int `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
Slat string `json:"slat"`
|
||||||
CreatedAt string `json:"created_at"`
|
CreatedAt string `json:"created_at"`
|
||||||
UpdatedAt string `json:"updated_at"`
|
UpdatedAt string `json:"updated_at"`
|
||||||
}
|
}
|
||||||
@@ -136,3 +138,43 @@ func (user *User) GetByEmail() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func QueryUsers(page, pagesize int) (list []interface{}) {
|
||||||
|
db, err := configs.GetDB()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
rows, err := db.Query("SELECT id, name, email, created_at, updated_at FROM users LIMIT ?, ?", (page-1)*pagesize, pagesize)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
for rows.Next() {
|
||||||
|
var user User
|
||||||
|
err := rows.Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt, &user.UpdatedAt)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
list = append(list, user)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func CountUsers() (count int) {
|
||||||
|
db, err := configs.GetDB()
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
err = db.QueryRow("SELECT COUNT(*) FROM users").Scan(&count)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
18
routers/users.go
Normal file
18
routers/users.go
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"main/models"
|
||||||
|
"main/utils"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func UsersGet(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.QueryUsers(listview.Page, listview.PageSize)
|
||||||
|
listview.Total = models.CountUsers()
|
||||||
|
listview.Next = listview.Page*listview.PageSize < listview.Total
|
||||||
|
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||||
|
w.Write(listview.ToJSON())
|
||||||
|
}
|
Reference in New Issue
Block a user