From 32416be9432f4a9746b84842d7e1ff36945a8b9a Mon Sep 17 00:00:00 2001 From: Ivan Titov Date: Sat, 22 Mar 2025 11:33:26 +0300 Subject: [PATCH] save --- database/init/00-users-init.sql | 2 +- database/init/01-project-init.sql | 4 +-- database/init/03-tasks-init.sql | 2 +- deployments/task-manager.yaml | 14 ---------- internal/persistance/project_repository.go | 31 ++++++++++++++++++++++ internal/persistance/sprint_repository.go | 0 internal/persistance/task_repository.go | 10 ++++--- 7 files changed, 42 insertions(+), 21 deletions(-) delete mode 100644 deployments/task-manager.yaml create mode 100644 internal/persistance/project_repository.go create mode 100644 internal/persistance/sprint_repository.go diff --git a/database/init/00-users-init.sql b/database/init/00-users-init.sql index 30aea77..491f94a 100644 --- a/database/init/00-users-init.sql +++ b/database/init/00-users-init.sql @@ -7,7 +7,7 @@ CREATE DATABASE tasks; CREATE SCHEMA task_manager; -CREATE TABLE task_manager.user( +CREATE TABLE task_manager.users( "id" SERIAL PRIMARY KEY UNIQUE, "login" TEXT NOT NULL UNIQUE, "password" TEXT NOT NULL, diff --git a/database/init/01-project-init.sql b/database/init/01-project-init.sql index 7744b63..0b73844 100644 --- a/database/init/01-project-init.sql +++ b/database/init/01-project-init.sql @@ -6,7 +6,7 @@ CREATE TABLE task_manager.project ( "id" SERIAL PRIMARY KEY UNIQUE, "name" TEXT NOT NULL, "description" TEXT NOT NULL, - "date" TEXT NOT NULL + "date" TEXT NOT NULL DEFAULT now() ); CREATE TABLE task_manager.user_project ( @@ -14,5 +14,5 @@ CREATE TABLE task_manager.user_project ( "projects" INTEGER NOT NULL, PRIMARY KEY ("users", "projects"), FOREIGN KEY ("projects") REFERENCES task_manager.project ("id") ON DELETE CASCADE, - FOREIGN KEY ("users") REFERENCES task_manager.user ("id") ON DELETE CASCADE + FOREIGN KEY ("users") REFERENCES task_manager.users ("id") ON DELETE CASCADE ); diff --git a/database/init/03-tasks-init.sql b/database/init/03-tasks-init.sql index 009725a..a33b737 100644 --- a/database/init/03-tasks-init.sql +++ b/database/init/03-tasks-init.sql @@ -13,7 +13,7 @@ CREATE TABLE task_manager.task( "date_start" DATE DEFAULT now(), "duration" INTEGER, "status" task_manager.task_status DEFAULT 'todo', - FOREIGN KEY (id_user) REFERENCES task_manager.user(id) ON DELETE SET NULL, + FOREIGN KEY (id_user) REFERENCES task_manager.users(id) ON DELETE SET NULL, FOREIGN KEY (id_sprint) REFERENCES task_manager.sprint(id) ON DELETE SET NULL, FOREIGN KEY (id_project) REFERENCES task_manager.project(id) ON DELETE CASCADE ); \ No newline at end of file diff --git a/deployments/task-manager.yaml b/deployments/task-manager.yaml deleted file mode 100644 index 8095619..0000000 --- a/deployments/task-manager.yaml +++ /dev/null @@ -1,14 +0,0 @@ -version: '3' -services: - tasks-postgres: - image: docker.io/postgres:13 - name: tasks-postgres - environment: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - 5432:5432 - volumes: - - ../database/init:/docker-entrypoint-initdb.d - - diff --git a/internal/persistance/project_repository.go b/internal/persistance/project_repository.go new file mode 100644 index 0000000..bfd16e2 --- /dev/null +++ b/internal/persistance/project_repository.go @@ -0,0 +1,31 @@ +package persistance + +import ( + "task_manager/internal/domain/project" + + _ "github.com/lib/pq" +) + +func (tm *TaskManagerRepository) AddProject(newProject *project.Project) error { + err := tm.db.QueryRow(`INSERT INTO task_manager.project(name,description) + VALUES ($1,$2) + RETURNING id + `, newProject.Name, newProject.Description).Scan(&newProject.Id) + + if err != nil { + return err + } + return nil +} + +func (tm *TaskManagerRepository) DeleteProject(project *project.Project) error { + _, err := tm.db.Exec(`DELETE FROM task_manager.project WHERE id=$1`, project.Id) + if err != nil { + return err + } + return nil +} + +func (tm *TaskManagerRepository) GetProjects() ([]project.Project, error) { + return nil, nil +} diff --git a/internal/persistance/sprint_repository.go b/internal/persistance/sprint_repository.go new file mode 100644 index 0000000..e69de29 diff --git a/internal/persistance/task_repository.go b/internal/persistance/task_repository.go index 843485a..514e2a3 100644 --- a/internal/persistance/task_repository.go +++ b/internal/persistance/task_repository.go @@ -7,7 +7,7 @@ import ( _ "github.com/lib/pq" ) -func (tm *TaskManagerRepository) AddTask(task tasks.Task) error { +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`, @@ -80,7 +80,9 @@ func (tm *TaskManagerRepository) GetTask(id int) (*tasks.Task, error) { 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) + 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 } @@ -88,11 +90,13 @@ func (tm *TaskManagerRepository) GetUserTasks(id_user int) ([]tasks.Task, error) 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, - &task.DateStart, ) if err != nil { return user_tasks, err