72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package persistance
|
|
|
|
import (
|
|
"log"
|
|
"task_manager/internal/domain/tasks"
|
|
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
func (tm *TaskManager) AddTask(task tasks.Task) error {
|
|
err := tm.db.QueryRow("INSERT INTO task_manager.tasks(name, description) VALUES($1,$2) RETURNING id", task.Name, task.Description).Scan(&task.Id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (tm *TaskManager) UpdateTask(task tasks.Task) error {
|
|
_, err := tm.db.Exec("UPDATE task_manager.tasks SET name=$1, description=$2, id_user=$3, status=$4 WHERE id=$3", task.Name, task.Description, task.IdUser, task.Status)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (tm *TaskManager) DeleteTask(task tasks.Task) error {
|
|
_, err := tm.db.Exec("DELETE FROM task_manager.tasks WHERE id=$1", task.Id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (tm *TaskManager) GetTask(id int) (*tasks.Task, error) {
|
|
task := tasks.Task{}
|
|
row := tm.db.QueryRow("SELECT (id,id_user,name,description,status,creation_date,update_date) FROM task_manager.tasks WHERE id=$1", id)
|
|
err := row.Scan(task.Id, task.IdUser, task.Name, task.Description, task.Status, task.CreationDate, task.UpdateDate)
|
|
if err != nil {
|
|
log.Println("Ошибка получения пользователя:", err)
|
|
return nil, err
|
|
}
|
|
|
|
return &task, nil
|
|
}
|
|
|
|
func (tm *TaskManager) GetUserTasks(id_user int) ([]tasks.Task, error) {
|
|
user_tasks := []tasks.Task{}
|
|
|
|
rows, err := tm.db.Query("SELECT (id,id_user,name,description,status,creation_date,update_date) FROM task_manager.tasks WHERE id_user=$1", id_user)
|
|
if err != nil {
|
|
return user_tasks, err
|
|
}
|
|
|
|
for rows.Next() {
|
|
task := tasks.Task{}
|
|
err = rows.Scan(&task.Id,
|
|
&task.IdUser,
|
|
&task.Name,
|
|
&task.Description,
|
|
&task.Status,
|
|
&task.CreationDate,
|
|
&task.UpdateDate,
|
|
)
|
|
if err != nil {
|
|
return user_tasks, err
|
|
}
|
|
user_tasks = append(user_tasks, task)
|
|
}
|
|
|
|
return user_tasks, nil
|
|
}
|