@Test public void testStatement() throws Exception { List<Statement> statements = new ArrayList<>(); PagingAndSortingQuery query = new NodeQueryStatements().findOne(123L, 1); statements.add(new DefaultGraphModelRequest(query.getStatement(), query.getParameters())); String cypher = mapper.writeValueAsString(new Statements(statements)); assertThat(cypher).isEqualTo( "{\"statements\":[{\"statement\":\"MATCH (n) WHERE ID(n) = { id } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p\",\"parameters\":{\"id\":123},\"resultDataContents\":[\"graph\"],\"includeStats\":false}]}"); } }
@Test public void testFindAllByType() throws Exception { assertThat( queryStatements.findAllByType("Raptor", Arrays.asList(1L, 2L), 1).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE ID(n) IN { ids } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
@Test public void testFindByLabel() throws Exception { query = nodeQueryStatements.findByType("NODE", 1); assertThat(query.getStatement()).isEqualTo("MATCH (n:`NODE`) WITH n MATCH p=(n)-[*0..1]-(m) RETURN p"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{}"); }
public <T, ID extends Serializable> QueryStatements<ID> queryStatementsFor(Class<T> type, int depth) { final FieldInfo fieldInfo = metaData.classInfo(type.getName()).primaryIndexField(); String primaryIdName = fieldInfo != null ? fieldInfo.property() : null; if (metaData.isRelationshipEntity(type.getName())) { return new RelationshipQueryStatements<>(primaryIdName, loadRelationshipClauseBuilder(depth)); } else { return new NodeQueryStatements<>(primaryIdName, loadNodeClauseBuilder(depth)); } }
@Override public PagingAndSortingQuery findOne(ID id, int depth) { return findOneByType("", id, depth); }
@Test public void testFindOne() throws Exception { query = nodeQueryStatements.findOne(123L, 1); assertThat(query.getStatement()) .isEqualTo("MATCH (n) WHERE ID(n) = { id } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"id\":123}"); }
@Test public void testFindByType() { assertThat(queryStatements.findByType("Raptor", 1).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); }
@Test public void testFindAllByTypeZeroDepth() throws Exception { assertThat( queryStatements.findAllByType("Raptor", Arrays.asList(1L, 2L), 0).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WHERE ID(n) IN { ids } WITH n SKIP 4 LIMIT 2 RETURN n"); }
@Test public void testFindByProperty() { assertThat(queryStatements.findByType("Raptor", filters, 2).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..2]-(m) RETURN p, ID(n)"); }
@Test public void testFindAllByTypeInfiniteDepth() throws Exception { assertThat( queryStatements.findAllByType("Raptor", Arrays.asList(1L, 2L), -1).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE ID(n) IN { ids } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)"); }
@Test public void testFindByPropertyInfiniteDepth() { assertThat(queryStatements.findByType("Raptor", filters, -1).setPagination(paging).getStatement()) .isEqualTo( "MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)"); }
@Test public void testFindByTypeZeroDepth() throws Exception { assertThat(queryStatements.findByType("Raptor", 0).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 RETURN n"); }
@Test public void testFindByTypeInfiniteDepth() throws Exception { assertThat(queryStatements.findByType("Raptor", -1).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WITH n SKIP 4 LIMIT 2 MATCH p=(n)-[*0..]-(m) RETURN p, ID(n)"); }
@Test public void testFindByPropertyZeroDepth() { assertThat(queryStatements.findByType("Raptor", filters, 0).setPagination(paging).getStatement()) .isEqualTo("MATCH (n:`Raptor`) WHERE n.`name` = { `name_0` } WITH n SKIP 4 LIMIT 2 RETURN n"); }
@Test public void findByPropertyEmbeddedDelimiter() throws Exception { query = nodeQueryStatements.findByType("Cookbooks", new Filters().add(new Filter("title", ComparisonOperator.EQUALS, "Mrs Beeton's Household Recipes")), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Cookbooks`) WHERE n.`title` = { `title_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())) .isEqualTo("{\"title_0\":\"Mrs Beeton's Household Recipes\"}"); }
@Test public void findByPropertyStringValue() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("ref", ComparisonOperator.EQUALS, "45 Eugenia")), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`ref` = { `ref_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"ref_0\":\"45 Eugenia\"}"); }
@Test public void findByPropertyIntegralValue() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("index", ComparisonOperator.EQUALS, 77)), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`index` = { `index_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"index_0\":77}"); }
@Test public void findByPropertyStandardForm() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("diameter", ComparisonOperator.EQUALS, 6.02E1)), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`diameter` = { `diameter_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"diameter_0\":60.2}"); }
@Test public void findByPropertyDecimal() throws Exception { query = nodeQueryStatements .findByType("Asteroid", new Filters().add(new Filter("diameter", ComparisonOperator.EQUALS, 60.2)), 1); assertThat(query.getStatement()).isEqualTo( "MATCH (n:`Asteroid`) WHERE n.`diameter` = { `diameter_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n)"); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"diameter_0\":60.2}"); }
@Test public void findByPropertyWildcardLike() throws JsonProcessingException { Filter filter = new Filter("ref", ComparisonOperator.LIKE, "*nia"); query = nodeQueryStatements.findByType("Asteroid", new Filters().add(filter), 1); assertThat(mapper.writeValueAsString(query.getParameters())).isEqualTo("{\"ref_0\":\"(?i).*nia\"}"); }