package net.olemartin.repository; import net.olemartin.domain.Player; import org.springframework.data.neo4j.annotation.Depth; import org.springframework.data.neo4j.annotation.Query; import org.springframework.data.neo4j.repository.GraphRepository; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository public interface PlayerRepository extends GraphRepository<Player> { @Query("MATCH (player) <-[:WINNER]- (match:Match), " + "(match) -[:LOOSER]-> (otherPlayer:Player) " + "WHERE id(player)={who} " + "RETURN otherPlayer") Iterable<Player> findOpponentsPlayerBeat(@Param("who") long player); @Query("MATCH (player) <-[:PLAYER]- (match:Match {result:\"REMIS\"}), " + "(match) -[:PLAYER]-> (otherPlayer:Player) " + "WHERE id(player)={who} " + "RETURN otherPlayer") Iterable<Player> findOpponentsRemis(@Param("who") long player); @Query("MATCH (p1:Player) -[:PLAYS_IN]- (t:Tournament)\n" + "where id(t) = {who}\n" + "return p1") @Depth(2) Iterable<Player> playersInTournament(@Param("who") Long tournamentId); @Query("MATCH (p:Player) <-[rel]- ()\n" + "WHERE NOT (p) --> (:Tournament)\n" + "DELETE rel, p") void deleteLoosePlayers(); }