This commit is contained in:
2023-05-11 07:50:56 +08:00
parent 69973202e0
commit 2ab29d1e02
6 changed files with 110 additions and 0 deletions

View File

@@ -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} [#服務詳情](#服務詳情)
詳情接口-請求方式: 詳情接口-請求方式:

View File

@@ -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
); );

View File

@@ -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"`

View File

@@ -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 {

View File

@@ -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
View 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())
}