FEBFES / FF-TM-BACK

Backend for task manager
0 stars 0 forks source link

158 - members refactoring #169

Closed IvanShish closed 1 year ago

IvanShish commented 1 year ago

Пытался сделать, чтобы при получении одного проекта, приходили мемберы эти проекта в одном sql запросе. Сейчас сделано через 2. Во-первых, чтобы это сработало, нужен верный sql запрос. То есть объединить вот эти 2:

SELECT P.*, (FP.user_id is not null) AS "isFavourite", R.name AS "roleName", R.description AS "roleDescription"
                    FROM project P
                            LEFT JOIN favourite_project FP ON P.id = FP.project_id AND FP.user_id = :userId
                            LEFT JOIN project_user_role PUR ON P.id = PUR.project_id AND PUR.user_id = :userId
                            LEFT JOIN role R ON PUR.role_id = R.id
                    WHERE P.id = :projectId
select u.id, u.email, u.username, u."firstName", u."lastName", u."displayName", fe.file_urn as "userPic", r.name as "roleOnProject"
                    from v_user u
                            inner join user_project up on u.id = up.user_id
                            inner join project_user_role pur on up.user_id = pur.user_id and up.project_id = pur.project_id
                            inner join role r on pur.role_id=r.id
                            left join file_entity fe on fe.id=u."userPicId"
                    where up.project_id = ?1

Во вторых, даже если написать верный запрос, не знаю, получится ли в проекции их запихнуть. Потому что даже сейчас не получилось создать интерфейс RoleProjection, в который записывалась бы роль. Я имею ввиду поле RoleProjection getUserRoleOnProject() в интерфейсе ProjectWithMembersProjection

IvanShish commented 1 year ago

И тогда в ProjectProjectionWithMembers будет новое поле List<MemberProjection> getMembers();

IvanShish commented 1 year ago

image хз че сонару не нравится((((((

VladisStep commented 1 year ago

Думаю, одним запросом получать проект и юзеров не стоит, вроде норм, что они разбиты на два. Так как первым запросом мы получаем инфу о проекте для определенного пользователя одной строкой, а вторым запросом получаем всех юзеров проекта.

VladisStep commented 1 year ago

хз че сонару не нравится((((((

Похоже хочет, чтобы ты табы прописывал через \t

IvanShish commented 1 year ago

хз че сонару не нравится((((((

Похоже хочет, чтобы ты табы прописывал через \t

всм?)

мне кажется ему наоборот не нравятся мои табуляции. Хочет чтобы я все в одной строке написал. Но тогда некрасиво будет

sonarcloud[bot] commented 1 year ago

SonarCloud Quality Gate failed.    Quality Gate failed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 4 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

idea Catch issues before they fail your Quality Gate with our IDE extension sonarlint SonarLint