Created
August 15, 2019 18:50
-
-
Save barata0/b143207fb4fddc5b56bbb3bbbf97a18f to your computer and use it in GitHub Desktop.
Quarkus fruit neo4j sync service
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.acme.neo4j; | |
import java.util.ArrayList; | |
import java.util.List; | |
import javax.enterprise.context.ApplicationScoped; | |
import javax.inject.Inject; | |
import org.neo4j.driver.Driver; | |
import org.neo4j.driver.Session; | |
import org.neo4j.driver.StatementResult; | |
import org.neo4j.driver.Values; | |
import org.neo4j.driver.types.Node; | |
@ApplicationScoped | |
public class FruitNeo4jSyncService { | |
private static final String FIND_ALL_STMT= "MATCH (f:Fruit) RETURN f ORDER BY f.name"; | |
private static final String FIND_BY_ID_STMT = "MATCH (f:Fruit) WHERE id(f) = $id RETURN f"; | |
private static final String DELETE_BY_ID_STMT = "MATCH (f:Fruit) WHERE id(f) = $id DETACH DELETE f"; | |
private static final String CREATE_BY_ID_STMT = "CREATE (f:Fruit {name: $name}) RETURN f"; | |
@Inject | |
Driver driver; | |
public static Fruit parse(Node node) { | |
return new Fruit(node.id(), node.get("name").asString()); | |
} | |
public List<Fruit> findAll() { | |
Session session = driver.session(); | |
List<Fruit> fruits = new ArrayList<>(); | |
try { | |
fruits = session.run(FIND_ALL_STMT).list(record -> parse(record.get("f").asNode())); | |
} finally { | |
session.close(); | |
} | |
return fruits; | |
} | |
public Fruit create(String name) { | |
Session session = driver.session(); | |
Fruit fruit = null; | |
try { | |
StatementResult rs = session.run(CREATE_BY_ID_STMT, Values.parameters("name", name)); | |
if (rs.hasNext()) { | |
fruit = parse(rs.single().get("f").asNode()); | |
} | |
} finally { | |
session.close(); | |
} | |
return fruit; | |
} | |
public Fruit byId(Long id) { | |
Session session = driver.session(); | |
Fruit fruit = null; | |
try { | |
StatementResult rs = session.run(FIND_BY_ID_STMT, Values.parameters("id", id)); | |
if (rs.hasNext()) { | |
fruit = parse(rs.single().get("f").asNode()); | |
} | |
} finally { | |
session.close(); | |
} | |
return fruit; | |
} | |
public boolean delete(Long id) { | |
Session session = driver.session(); | |
boolean deleted = false; | |
try { | |
StatementResult rs = session.run(DELETE_BY_ID_STMT, Values.parameters("id", id)); | |
if (rs.summary().counters().nodesDeleted() > 0) { | |
deleted = true; | |
} | |
} finally { | |
session.close(); | |
} | |
return deleted; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment