use of org.neo4j.ogm.cypher.query.CypherQuery in project neo4j-ogm by neo4j.
the class DeleteDelegate method delete.
public <T> Object delete(Class<T> clazz, Iterable<Filter> filters, boolean listResults) {
ClassInfo classInfo = session.metaData().classInfo(clazz.getSimpleName());
if (classInfo != null) {
resolvePropertyAnnotations(clazz, filters);
CypherQuery query;
if (classInfo.isRelationshipEntity()) {
query = new RelationshipDeleteStatements().deleteAndList(classInfo.neo4jName(), filters);
} else {
query = new NodeDeleteStatements().deleteAndList(classInfo.neo4jName(), filters);
}
if (listResults) {
return list(query, classInfo.isRelationshipEntity());
}
return count(query, classInfo.isRelationshipEntity());
}
throw new RuntimeException(clazz.getName() + " is not a persistable class");
}
use of org.neo4j.ogm.cypher.query.CypherQuery in project neo4j-ogm by neo4j.
the class ExecuteQueriesDelegate method countEntitiesOfType.
public long countEntitiesOfType(Class<?> entity) {
ClassInfo classInfo = session.metaData().classInfo(entity.getName());
if (classInfo == null) {
return 0;
}
CypherQuery countStatement;
if (classInfo.isRelationshipEntity()) {
ClassInfo startNodeInfo = null;
ClassInfo endNodeInfo = null;
for (FieldInfo fieldInfo : classInfo.fieldsInfo().fields()) {
if (fieldInfo.hasAnnotation(StartNode.class)) {
startNodeInfo = session.metaData().classInfo(DescriptorMappings.getType(fieldInfo.getTypeDescriptor()).getName());
} else if (fieldInfo.hasAnnotation(EndNode.class)) {
endNodeInfo = session.metaData().classInfo(DescriptorMappings.getType(fieldInfo.getTypeDescriptor()).getName());
}
if (endNodeInfo != null && startNodeInfo != null) {
break;
}
}
String start = startNodeInfo.neo4jName();
String end = endNodeInfo.neo4jName();
String type = classInfo.neo4jName();
countStatement = new CountStatements().countEdges(start, type, end);
} else {
Collection<String> labels = classInfo.staticLabels();
if (labels.isEmpty()) {
return 0;
}
countStatement = new CountStatements().countNodes(labels);
}
return session.doInTransaction(() -> {
try (Response<RowModel> response = session.requestHandler().execute((RowModelRequest) countStatement)) {
RowModel queryResult = response.next();
return queryResult == null ? 0 : ((Number) queryResult.getValues()[0]).longValue();
}
}, Transaction.Type.READ_ONLY);
}
use of org.neo4j.ogm.cypher.query.CypherQuery in project neo4j-ogm by neo4j.
the class CountStatementsTest method testCountEdgesWithTypeAndFilters.
@Test
public void testCountEdgesWithTypeAndFilters() throws Exception {
CypherQuery query = statements.countEdges("INFLUENCE", new Filters().add(new Filter("score", ComparisonOperator.EQUALS, -12.2)));
assertThat(query.getStatement()).isEqualTo("MATCH (n)-[r0:`INFLUENCE`]->(m) WHERE r0.`score` = $`score_0` RETURN COUNT(r0)");
assertThat(query.getParameters().toString()).isEqualTo("{score_0=-12.2}");
}
use of org.neo4j.ogm.cypher.query.CypherQuery in project neo4j-ogm by neo4j.
the class NodeDeleteStatementsTest method testDeleteWithLabelAndFilters.
@Test
public void testDeleteWithLabelAndFilters() {
CypherQuery query = statements.delete("INFLUENCE", new Filters().add(new Filter("score", ComparisonOperator.EQUALS, -12.2)));
assertThat(query.getStatement()).isEqualTo("MATCH (n:`INFLUENCE`) " + "WHERE n.`score` = $`score_0` " + "WITH n " + "OPTIONAL MATCH (n)-[r0]-() " + "DELETE r0, n");
}
Aggregations