task_manager/internal/persistance/task_repository.go

105 lines
2.2 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_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.Title,
&task.Description,
&task.Status,
&task.DateStart,
)
if err != nil {
return user_tasks, err
}
user_tasks = append(user_tasks, task)
}
return user_tasks, nil
}