99 lines
2.7 KiB
Go
99 lines
2.7 KiB
Go
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
|
|
} |