合併
This commit is contained in:
		@@ -8,6 +8,7 @@ import (
 | 
			
		||||
type Server struct {
 | 
			
		||||
	ID        int    `json:"id"`
 | 
			
		||||
	Name      string `json:"name"`
 | 
			
		||||
	Type      string `json:"type"` // (訓練|推理)
 | 
			
		||||
	IP        string `json:"ip"`
 | 
			
		||||
	Port      int    `json:"port"`
 | 
			
		||||
	Username  string `json:"username"`
 | 
			
		||||
@@ -3,6 +3,9 @@ package models
 | 
			
		||||
import (
 | 
			
		||||
	"log"
 | 
			
		||||
	"main/configs"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Task struct {
 | 
			
		||||
@@ -16,6 +19,49 @@ type Task struct {
 | 
			
		||||
	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 {
 | 
			
		||||
	db, err := configs.GetDB()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,8 @@ type User struct {
 | 
			
		||||
	ID        int    `json:"id"`
 | 
			
		||||
	Name      string `json:"name"`
 | 
			
		||||
	Email     string `json:"email"`
 | 
			
		||||
	Password  string `json:"password"`
 | 
			
		||||
	Slat      string `json:"slat"`
 | 
			
		||||
	CreatedAt string `json:"created_at"`
 | 
			
		||||
	UpdatedAt string `json:"updated_at"`
 | 
			
		||||
}
 | 
			
		||||
@@ -136,3 +138,43 @@ func (user *User) GetByEmail() error {
 | 
			
		||||
	}
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user