. */ namespace SP\Domain\User\In; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\Infrastructure\Database\QueryResult; /** * Class UserToUserGroupRepository * * @package SP\Infrastructure\User\Repositories */ interface UserToUserGroupRepositoryInterface { /** * Checks whether the user is included in the group * * @param int $groupId * @param int $userId * * @return bool * @throws ConstraintException * @throws QueryException */ public function checkUserInGroup(int $groupId, int $userId): bool; /** * Returns the groups which the user belongs to * * @param int $userId * * @return QueryResult * @throws \SP\Core\Exceptions\ConstraintException * @throws \SP\Core\Exceptions\QueryException */ public function getGroupsForUser(int $userId): QueryResult; /** * Updates users from a group * * @param int $id * @param array $users * * @return int * @throws ConstraintException * @throws QueryException */ public function update(int $id, array $users): int; /** * Deletes users from a group * * @param $id int * * @return int * @throws ConstraintException * @throws QueryException */ public function delete(int $id): int; /** * Adds users to a group * * @param int $groupId * @param array $users * * @return int * @throws ConstraintException * @throws QueryException */ public function add(int $groupId, array $users): int; /** * Returns users from a group by group Id * * @param $id int * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getById(int $id): QueryResult; }