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 SCHEMA task_manager;
CREATE TABLE task_manager.user( CREATE TABLE task_manager.users(
"id" SERIAL PRIMARY KEY UNIQUE, "id" SERIAL PRIMARY KEY UNIQUE,
"login" TEXT NOT NULL UNIQUE, "login" TEXT NOT NULL UNIQUE,
"password" TEXT NOT NULL, "password" TEXT NOT NULL,

View File

@ -6,7 +6,7 @@ CREATE TABLE task_manager.project (
"id" SERIAL PRIMARY KEY UNIQUE, "id" SERIAL PRIMARY KEY UNIQUE,
"name" TEXT NOT NULL, "name" TEXT NOT NULL,
"description" TEXT NOT NULL, "description" TEXT NOT NULL,
"date" TEXT NOT NULL "date" TEXT NOT NULL DEFAULT now()
); );
CREATE TABLE task_manager.user_project ( CREATE TABLE task_manager.user_project (
@ -14,5 +14,5 @@ CREATE TABLE task_manager.user_project (
"projects" INTEGER NOT NULL, "projects" INTEGER NOT NULL,
PRIMARY KEY ("users", "projects"), PRIMARY KEY ("users", "projects"),
FOREIGN KEY ("projects") REFERENCES task_manager.project ("id") ON DELETE CASCADE, 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(), "date_start" DATE DEFAULT now(),
"duration" INTEGER, "duration" INTEGER,
"status" task_manager.task_status DEFAULT 'todo', "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_sprint) REFERENCES task_manager.sprint(id) ON DELETE SET NULL,
FOREIGN KEY (id_project) REFERENCES task_manager.project(id) ON DELETE CASCADE 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" _ "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) 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) VALUES($1,$2,$3,$4,$5,$6,$7)
RETURNING id`, 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) { func (tm *TaskManagerRepository) GetUserTasks(id_user int) ([]tasks.Task, error) {
user_tasks := []tasks.Task{} 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 { if err != nil {
return user_tasks, err return user_tasks, err
} }
@ -88,11 +90,13 @@ func (tm *TaskManagerRepository) GetUserTasks(id_user int) ([]tasks.Task, error)
for rows.Next() { for rows.Next() {
task := tasks.Task{} task := tasks.Task{}
err = rows.Scan(&task.Id, err = rows.Scan(&task.Id,
&task.IdProject,
&task.IdUser, &task.IdUser,
&task.IdSprint,
&task.Title, &task.Title,
&task.Description, &task.Description,
&task.Duration,
&task.Status, &task.Status,
&task.DateStart,
) )
if err != nil { if err != nil {
return user_tasks, err return user_tasks, err