Interface GroupRepository

All Superinterfaces:
org.springframework.data.repository.CrudRepository<Entity,Long>, org.springframework.data.neo4j.repository.Neo4jRepository<Entity,Long>, org.springframework.data.repository.PagingAndSortingRepository<Entity,Long>, org.springframework.data.repository.query.QueryByExampleExecutor<Entity>, org.springframework.data.repository.Repository<Entity,Long>, VRSpaceDB

@DependsOn("database") public interface GroupRepository extends org.springframework.data.neo4j.repository.Neo4jRepository<Entity,Long>, VRSpaceDB
  • Method Details

    • listOwnedGroups

      @Query("MATCH (ug:UserGroup)<-[owned:IS_OWNED]-(o:Ownership)-[owns:IS_OWNER]->(c:Client) WHERE ID(c) = $clientId RETURN o,owns,c,owned,ug ORDER BY ug.name") List<UserGroup> listOwnedGroups(long clientId)
    • listUserGroups

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(c)=$clientId AND gm.pendingInvite IS NULL AND gm.pendingRequest IS NULL RETURN ug ORDER BY ug.name") List<UserGroup> listUserGroups(long clientId)
    • listGroupMemberships

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(c)=$clientId AND gm.pendingInvite IS NULL AND gm.pendingRequest IS NULL RETURN gm, r, ug ORDER BY ug.name") List<GroupMember> listGroupMemberships(long clientId)
    • listGroupClients

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(ug)=$groupId AND gm.pendingRequest IS NULL AND gm.pendingInvite IS NULL RETURN c") List<Client> listGroupClients(long groupId)
    • listGroupMembers

      @Query("MATCH (gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(ug)=$groupId AND gm.pendingRequest IS NULL AND gm.pendingInvite IS NULL RETURN gm, r, ug") List<GroupMember> listGroupMembers(long groupId)
    • findGroupMember

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(ug)=$groupId AND ID(c)=$clientId RETURN gm, c, mc, r, ug") Optional<GroupMember> findGroupMember(long groupId, long clientId)
    • findGroup

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(c)=$clientId AND ug.name=$groupName RETURN ug") Optional<UserGroup> findGroup(long clientId, String groupName)
    • findGroup

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(c)=$clientId AND ID(ug)=$groupId RETURN ug") Optional<UserGroup> findGroup(long clientId, long groupId)
    • findGroup

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE AND ug.name=$groupName RETURN ug") Optional<UserGroup> findGroup(String groupName)
    • listPendingRequests

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup) WHERE ID(ug)=$groupId AND gm.pendingRequest IS NOT NULL RETURN gm, c, mc, r, ug") List<GroupMember> listPendingRequests(long groupId)
    • listPendingInvitations

      @Query("MATCH (c:Client)<-[mc:MEMBER_CLIENT]-(gm:GroupMember)-[r:IS_MEMBER_OF]->(ug:UserGroup), (s:Client)<-[sc:SPONSOR_CLIENT]-(gm:GroupMember) WHERE ID(c)=$clientId AND gm.pendingInvite IS NOT NULL RETURN gm, c, mc, r, ug, sc, s ORDER BY ug.name") List<GroupMember> listPendingInvitations(long clientId)
    • unreadMessageCount

      @Query("MATCH (msg:GroupMessage)-[r:PARENT_GROUP]->(ug:UserGroup) WHERE ID(ug)=$groupId AND ($since IS NULL OR msg.timestamp >= $since) return count(msg)") Integer unreadMessageCount(long groupId, Instant since)
    • messagesSince

      @Query("MATCH (c:Client)<-[mc:SENDER_CLIENT]-(msg:GroupMessage)-[r:PARENT_GROUP]->(ug:UserGroup) WHERE ID(ug)=$groupId AND ($since IS NULL OR msg.timestamp >= $since) return msg, mc, c ORDER BY msg.timestamp") List<GroupMessage> messagesSince(long groupId, Instant since)