diff --git a/src/main/java/org/qortal/data/group/GroupData.java b/src/main/java/org/qortal/data/group/GroupData.java index 170f678b..7b19fcd2 100644 --- a/src/main/java/org/qortal/data/group/GroupData.java +++ b/src/main/java/org/qortal/data/group/GroupData.java @@ -35,6 +35,9 @@ public class GroupData { ) private int creationGroupId; + // We abuse this class for API purposes by adding this unrelated field. Not always present. + private Boolean isAdmin; + // Constructors // necessary for JAX-RS serialization @@ -140,4 +143,14 @@ public class GroupData { return this.creationGroupId; } + // This is for API call GET /groups/member/{address} + + public Boolean isAdmin() { + return this.isAdmin; + } + + public void setIsAdmin(boolean isAdmin) { + this.isAdmin = isAdmin; + } + } diff --git a/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java b/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java index 53fcfe0e..257c61c9 100644 --- a/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java +++ b/src/main/java/org/qortal/repository/hsqldb/HSQLDBGroupRepository.java @@ -206,8 +206,10 @@ public class HSQLDBGroupRepository implements GroupRepository { public List getGroupsWithMember(String member, Integer limit, Integer offset, Boolean reverse) throws DataException { StringBuilder sql = new StringBuilder(512); sql.append("SELECT group_id, owner, group_name, description, created, updated, reference, is_open, " - + "approval_threshold, min_block_delay, max_block_delay, creation_group_id FROM Groups " - + "JOIN GroupMembers USING (group_id) WHERE address = ? ORDER BY group_name"); + + "approval_threshold, min_block_delay, max_block_delay, creation_group_id, admin FROM Groups " + + "JOIN GroupMembers USING (group_id) " + + "LEFT OUTER JOIN GroupAdmins ON GroupAdmins.group_id = GroupMembers.group_id AND GroupAdmins.admin = GroupMembers.address " + + "WHERE address = ? ORDER BY group_name"); if (reverse != null && reverse) sql.append(" DESC"); @@ -239,8 +241,13 @@ public class HSQLDBGroupRepository implements GroupRepository { int maxBlockDelay = resultSet.getInt(11); int creationGroupId = resultSet.getInt(12); + resultSet.getString(13); + boolean isAdmin = !resultSet.wasNull(); - groups.add(new GroupData(groupId, owner, groupName, description, created, updated, isOpen, approvalThreshold, minBlockDelay, maxBlockDelay, reference, creationGroupId)); + GroupData groupData = new GroupData(groupId, owner, groupName, description, created, updated, isOpen, approvalThreshold, minBlockDelay, maxBlockDelay, reference, creationGroupId); + groupData.setIsAdmin(isAdmin); + + groups.add(groupData); } while (resultSet.next()); return groups;