Skip to content

Commit

Permalink
feat: add neo4j to docker-compose.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
ancavar committed Apr 26, 2023
1 parent b323df4 commit 046234e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
14 changes: 13 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
version: "3"
services:
local-database:
image: "postgres:15.2"
image: postgres:15.2
env_file:
- postgres.env
ports:
- "5432:5432"
volumes:
- pg-volume:/var/lib/postgresql/data
neo4j:
image: neo4j:5.6.0
container_name: neo4j
env_file:
- neo4j.env
ports:
- "7474:7474"
- "7687:7687"
volumes:
- neo4j-volume:/data
- neo4j-volume:/logs
volumes:
pg-volume: {}
neo4j-volume: {}
1 change: 1 addition & 0 deletions neo4j.env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
NEO4J_AUTH=neo4j/password
17 changes: 12 additions & 5 deletions trees/src/main/kotlin/bst/db/controllers/Neo4jController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@ import bst.nodes.RBTNode.Color
import org.neo4j.ogm.config.Configuration
import org.neo4j.ogm.session.SessionFactory

class Neo4jController(config: Configuration) {
class Neo4jController {
private val config = Configuration.Builder()
.uri("bolt://localhost")
.credentials("neo4j", "password")
.build()
private val sessionFactory = SessionFactory(config, "bst")
private val session = sessionFactory.openSession()



private fun RBTNode<*, *>?.toSerializableNode(): SerializableNode? {
if (this == null) {
return null
Expand Down Expand Up @@ -88,18 +93,21 @@ class Neo4jController(config: Configuration) {
)
}

fun loadDeserialized(name: String): RedBlackTree<Int, String> {
val tree = getTree(name)
fun getTree(name: String): RedBlackTree<Int, String> {
val tree = loadTree(name)
return deserializeTree(tree.toSerializableTree())
}

// Could be useful for underlying logic of GUI
/*
fun loadSerialized(name: String): SerializableTree {
val tree = getTree(name)
return tree.toSerializableTree()
}
private fun getTree(name: String): TreeEntity {
*/

private fun loadTree(name: String): TreeEntity {
return session.queryForObject(
TreeEntity::class.java,
"MATCH (n)-[r *1..]-(m) " + "WHERE n.treeName = \$name RETURN n, r, m",
Expand All @@ -110,4 +118,3 @@ class Neo4jController(config: Configuration) {
fun getNames() = session.query("MATCH (n: TreeEntity) RETURN n.treeName", mapOf<String, String>())
.flatMap { it.values.map { value -> value.toString() } }
}

0 comments on commit 046234e

Please sign in to comment.