diff --git a/docker-compose.override.yml b/docker-compose.override.yml index c8644a6f8..c5e7d5cf9 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -13,6 +13,7 @@ services: neo4j: volumes: - mongo-export:/mongo-export + - ./neo4j/import:/var/lib/neo4j/import ports: - 7687:7687 - 7474:7474 diff --git a/neo4j/Dockerfile b/neo4j/Dockerfile index 2ef9443a5..07344b47b 100644 --- a/neo4j/Dockerfile +++ b/neo4j/Dockerfile @@ -1,3 +1,3 @@ FROM neo4j:3.5.0 RUN wget https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/3.5.0.1/apoc-3.5.0.1-all.jar -P plugins/ -COPY import.cql . +COPY import ./import diff --git a/neo4j/import/import.sh b/neo4j/import/import.sh new file mode 100755 index 000000000..88a2666dc --- /dev/null +++ b/neo4j/import/import.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +echo "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r;" | cypher-shell +cat $SCRIPT_DIRECTORY/*.cql | cypher-shell diff --git a/neo4j/import.cql b/neo4j/import/import.todo similarity index 79% rename from neo4j/import.cql rename to neo4j/import/import.todo index 521cc1221..672ef0116 100644 --- a/neo4j/import.cql +++ b/neo4j/import/import.todo @@ -13,23 +13,6 @@ ON CREATE SET b.key = badge.key, b.status = badge.status -CALL apoc.load.json('file:/mongo-export/users.json') YIELD value as user -MERGE(u:User {id: user._id["$oid"]}) -ON CREATE SET u.name = user.name, - u.slug = user.slug, - u.email = user.email, - u.password = user.password, - u.avatar = user.avatar, - u.coverImg = user.coverImg, - u.wasInvited = user.wasInvited, - u.role = apoc.text.toUpperCase(user.role) -WITH u, user, user.badgeIds AS badgeIds -UNWIND badgeIds AS badgeId -MATCH (b:Badge {id: badgeId}) -MERGE (b)-[:REWARDED]->(u) - - - CALL apoc.load.json('file:/mongo-export/contributions.json') YIELD value as post MERGE (p:Post {id: post._id["$oid"]}) ON CREATE SET p.title = post.title, diff --git a/neo4j/import/users.cql b/neo4j/import/users.cql new file mode 100644 index 000000000..96abb1637 --- /dev/null +++ b/neo4j/import/users.cql @@ -0,0 +1,20 @@ +CALL apoc.load.json('file:/mongo-export/users.json') YIELD value as user +MERGE(u:User {id: user._id["$oid"]}) +ON CREATE SET +u.name = user.name, +u.slug = user.slug, +u.email = user.email, +u.password = user.password, +u.avatar = user.avatar, +u.coverImg = user.coverImg, +u.wasInvited = user.wasInvited, +u.role = toLower(user.role), +u.createdAt = user.createdAt.`$date`, +u.updatedAt = user.updatedAt.`$date`, +u.deleted = false, +u.disabled = false +WITH u, user, user.badgeIds AS badgeIds +UNWIND badgeIds AS badgeId +MATCH (b:Badge {id: badgeId}) +MERGE (b)-[:REWARDED]->(u) +; diff --git a/src/seed/reset-db.js b/src/seed/reset-db.js index 616ff71e8..7d7c4f3f9 100644 --- a/src/seed/reset-db.js +++ b/src/seed/reset-db.js @@ -11,7 +11,12 @@ if (process.env.NODE_ENV === 'production') { const driver = neo4j().getDriver() const session = driver.session() -query('MATCH (n) DETACH DELETE n', session).then(() => { +const deleteAll = ` +MATCH (n) +OPTIONAL MATCH (n)-[r]-() +DELETE n,r +` +query(deleteAll, session).then(() => { /* eslint-disable-next-line no-console */ console.log('Successfully deleted all nodes and relations!') }).catch((err) => {