Back-Feature #396
closedРеализация привязки пользователей друг к другу (Семьи)
Description
Нужно реализовать привязку пользователей друг к другу, т.е. семьи.
Для этого нужно поменять сущности:
В форме по добавлению члена семьи оставляем только роль. (дату рождения выносится в user'а)
Удаляем invite_token из family_member, и вместо этого создаём новую сущность family_invite с полями:
invite_id: string (PK: uuid, будет служить в роли токена приглашения, по нему будет генерироваться ссылка)
family_id: string (FK: family.family_id семья, в которую приглашение добавляет пользователя)
family_role: string (с какой ролью мы добавим нового члена семьи)
expires_at: time without timestamp (когда истекает срок действия приглашения)
Для сущностей добавить соответствующие контроллеры и методы:
Family:
createFamily (создаём семью по user_id)
getFamily (head_id)
deleteFamily (удаляем семью по user_id (удалится семья, у которой head_id === user_id) )
FamilyInvite:
createFamilyInvite (в запрос подаём user_id (для сравнения с head_id семьи), указываются family_id и family_role -> создаём приглашение)
getInviteLink (по invite_id получаем ссылку на приглашение)
нужно продумать механизм, который условно раз в день будет проходиться по списку инвайтов и удалять те, которые уже должны быть недействительны
FamilyMember:
createFamilyMember (создаём familyMember'а для пользователя, используя invite_id и user_id)
updateFamilyMember (подаём user_id (главы семьи), family_member_id: глава семьи может к примеру поменять роль члена семьи)
getFamilyMembersByFamily (получить список всех familyMember'ов в семье)
deleteFamilyMember (глава семьи может по family_member_id удалять членов семьи)
FamilyNickname:
createFamilyNickname (на вход подаётся user_id выполняющего запрос, а также from_id, to_id, и остальные поля FamilyNickname)
updateFamilyNickname (на вход подаётся user_id выполняющего запрос, а также from_id, to_id, и остальные поля FamilyNickname)
getFamilyNicknamesFromFamilyMember (подаём user_id, family_member_id, и получаем список всех FamilyNickname, у которых from_id равен family_member_id запроса)
getFamilyNickname (на вход подаём user_id, from_id, to_id, этот запрос будет удобно использовать, чтобы заполнить форму для редактирования FamilyNickname)