private UserEntry getUserInfo(DSLContext tx, Record5<UUID, String, String, Boolean, String> r) {
Field<String> orgNameField = select(ORGANIZATIONS.ORG_NAME)
.from(ORGANIZATIONS)
.where(ORGANIZATIONS.ORG_ID.eq(TEAMS.ORG_ID)).asField();
SelectConditionStep<Record1<UUID>> teamIds = select(USER_TEAMS.TEAM_ID)
.from(USER_TEAMS)
.where(USER_TEAMS.USER_ID.eq(r.get(USERS.USER_ID)));
List<OrganizationEntry> orgs = tx.selectDistinct(TEAMS.ORG_ID, orgNameField)
.from(TEAMS)
.where(TEAMS.TEAM_ID.in(teamIds))
.fetch(e -> new OrganizationEntry(e.value1(), e.value2(), null, null,null));
List<RoleEntry> roles = tx.select(ROLES.ROLE_ID, ROLES.ROLE_NAME, ROLES.GLOBAL_READER, ROLES.GLOBAL_WRITER)
.from(ROLES)
.where(ROLES.ROLE_ID.in(select(USER_ROLES.ROLE_ID).from(USER_ROLES).where(USER_ROLES.USER_ID.eq(r.get(USERS.USER_ID)))))
.fetch(e -> new RoleEntry(e.value1(), e.value2(), e.value3(), e.value4()));
return new UserEntry(r.get(USERS.USER_ID),
r.get(USERS.USERNAME),
new HashSet<>(orgs),
r.get(USERS.IS_ADMIN),
UserType.valueOf(r.get(USERS.USER_TYPE)),
r.get(USERS.USER_EMAIL),
new HashSet<>(roles));
}