109 lines
2.3 KiB
Go
109 lines
2.3 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(id_sprint,id_user,id_project,title,description,duration,status)
|
|
VALUES($1,$2,$3,$4,$5,$6,$7)
|
|
RETURNING id`,
|
|
task.IdSprint,
|
|
task.IdUser,
|
|
task.IdProject,
|
|
task.Title,
|
|
task.Description,
|
|
task.Duration,
|
|
task.Status).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
|
|
id_sprint=$1,
|
|
id_user=$2,
|
|
id_project=$3,
|
|
title=$4,
|
|
description=$5,
|
|
duration=$6,
|
|
status=$7
|
|
WHERE id=$8`,
|
|
task.IdSprint,
|
|
task.IdUser,
|
|
task.IdProject,
|
|
task.Title,
|
|
task.Description,
|
|
task.Duration,
|
|
task.DateStart,
|
|
task.Id)
|
|
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_sprint,id_user,id_project,title,description,date_start,duration,status) FROM task_manager.tasks WHERE id=$1", id)
|
|
err := row.Scan(&task.Id,
|
|
&task.IdSprint,
|
|
&task.IdUser,
|
|
&task.IdProject,
|
|
&task.Title,
|
|
&task.Description,
|
|
&task.DateStart,
|
|
&task.Duration,
|
|
&task.Status)
|
|
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_project,id_user,id_sprint,title,description,duration,status)
|
|
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.IdProject,
|
|
&task.IdUser,
|
|
&task.IdSprint,
|
|
&task.Title,
|
|
&task.Description,
|
|
&task.Duration,
|
|
&task.Status,
|
|
)
|
|
if err != nil {
|
|
return user_tasks, err
|
|
}
|
|
user_tasks = append(user_tasks, task)
|
|
}
|
|
|
|
return user_tasks, nil
|
|
}
|