task_manager/internal/persistance/task_repository.go
Ivan Titov 102413daaf save
2025-03-21 10:33:45 +03:00

72 lines
1.9 KiB
Go

package persistance
import (
"log"
"task_manager/internal/domain/tasks"
_ "github.com/lib/pq"
)
func (tm *TaskManagerRepository) 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 *TaskManagerRepository) 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 *TaskManagerRepository) 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 *TaskManagerRepository) 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 *TaskManagerRepository) 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
}