This commit is contained in:
Ivan Titov 2025-03-22 11:33:26 +03:00
parent 556fa77831
commit 32416be943
7 changed files with 42 additions and 21 deletions

View File

@ -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,

View File

@ -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
);

View File

@ -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
);

View File

@ -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

View File

@ -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
}

View File

@ -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