package db import ( "database/sql" "time" ) // CreateTask inserts a new task into the database func CreateTask(db *sql.DB, taskName string, taskDescription string, groupID int) error { query := `INSERT INTO tasks (task_name, task_desc, group_id, is_done, created_at) VALUES ($1, $2, $3, $4, $5)` _, err := db.Exec(query, taskName, taskDescription, groupID, false, time.Now()) return err } // GetAllTasks retrieves all tasks from the database func GetAllTasks(db *sql.DB) ([]Tasks, error) { query := `SELECT task_id, task_name, task_desc, group_id, is_done, created_at FROM tasks ORDER BY created_at DESC` rows, err := db.Query(query) if err != nil { return nil, err } defer rows.Close() var tasks []Tasks for rows.Next() { var task Tasks err := rows.Scan(&task.TaskID, &task.TaskName, &task.TaskDescription, &task.GroupID, &task.IsDone, &task.CreatedAt) if err != nil { return nil, err } tasks = append(tasks, task) } return tasks, nil } // GetTaskByID retrieves a specific task by its ID func GetTaskByID(db *sql.DB, taskID int) (*Tasks, error) { query := `SELECT task_id, task_name, task_desc, group_id, is_done, created_at FROM tasks WHERE task_id = $1` row := db.QueryRow(query, taskID) var task Tasks err := row.Scan(&task.TaskID, &task.TaskName, &task.TaskDescription, &task.GroupID, &task.IsDone, &task.CreatedAt) if err != nil { return nil, err } return &task, nil } // GetTasksByGroupID retrieves all tasks for a specific group func GetTasksByGroupID(db *sql.DB, groupID int) ([]Tasks, error) { query := `SELECT task_id, task_name, task_desc, group_id, is_done, created_at FROM tasks WHERE group_id = $1` rows, err := db.Query(query, groupID) if err != nil { return nil, err } defer rows.Close() var tasks []Tasks for rows.Next() { var task Tasks err := rows.Scan(&task.TaskID, &task.TaskName, &task.TaskDescription, &task.GroupID, &task.IsDone, &task.CreatedAt) if err != nil { return nil, err } tasks = append(tasks, task) } return tasks, nil } // MarkTaskAsDone updates a task's status to completed func MarkTaskAsDone(db *sql.DB, taskID int) error { query := `UPDATE tasks SET is_done = true WHERE task_id = $1` _, err := db.Exec(query, taskID) return err } // RemoveTask deletes a task from the database func RemoveTask(db *sql.DB, taskID int) error { query := `DELETE FROM tasks WHERE task_id = $1` _, err := db.Exec(query, taskID) return err } // UpdateTask updates task name and description func UpdateTask(db *sql.DB, taskID int, taskName string, taskDescription string) error { query := `UPDATE tasks SET task_name = $1, task_desc = $2 WHERE task_id = $3` _, err := db.Exec(query, taskName, taskDescription, taskID) return err }