package models import ( "log" "main/configs" ) type Task struct { ID int `json:"id"` Name string `json:"name"` Type string `json:"type"` // 任務類型(訓練|推理) Status string `json:"status"` // (waiting|running|success|error) Progress int `json:"progress"` // (0-100) CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` UserID int `json:"user_id"` } func (task *Task) Create() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("INSERT INTO tasks(name, type, created_at, updated_at) values(?, ?, ?, ?)") if err != nil { log.Println(err) return err } defer stmt.Close() result, err := stmt.Exec(task.Name, task.Type, task.CreatedAt, task.UpdatedAt) if err != nil { log.Println(err) return err } id, err := result.LastInsertId() if err != nil { return err } task.ID = int(id) return nil } func (task *Task) Delete() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("DELETE FROM tasks WHERE id = ?") if err != nil { log.Println(err) return err } defer stmt.Close() _, err = stmt.Exec(task.ID) if err != nil { log.Println(err) return err } return nil } func (task *Task) Update() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("UPDATE tasks SET name = ?, type = ?, updated_at = ? WHERE id = ?") if err != nil { log.Println(err) return err } defer stmt.Close() _, err = stmt.Exec(task.Name, task.Type, task.UpdatedAt, task.ID) if err != nil { log.Println(err) return err } return nil } func (task *Task) Get() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() err = db.QueryRow("SELECT name, type, created_at, updated_at FROM tasks WHERE id = ?", task.ID).Scan(&task.Name, &task.Type, &task.CreatedAt, &task.UpdatedAt) if err != nil { log.Println(err) return err } return nil } func QueryTasks(page int, pagesize int) (tasks []interface{}) { db, err := configs.GetDB() if err != nil { log.Println(err) return } defer db.Close() rows, err := db.Query("SELECT id, name, type, created_at, updated_at FROM tasks LIMIT ?, ?", (page-1)*pagesize, pagesize) if err != nil { log.Println(err) return } defer rows.Close() for rows.Next() { task := Task{} err := rows.Scan(&task.ID, &task.Name, &task.Type, &task.CreatedAt, &task.UpdatedAt) if err != nil { log.Println(err) return } tasks = append(tasks, task) } return } func CountTasks() (count int) { db, err := configs.GetDB() if err != nil { log.Println(err) return } defer db.Close() err = db.QueryRow("SELECT COUNT(*) FROM tasks").Scan(&count) if err != nil { log.Println(err) return } return }