diff --git a/.dockerignore b/.dockerignore index dba77200f31037261701b7054d9d1e838ed98071..31f5b28f3077c80ef94711c9cf039e4f01d56569 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,7 +11,6 @@ docker-compose*.yml ./*.png ./*.log -kubernetes/ node_modules/ scripts/ dist/ diff --git a/db-migration-worker/.dockerignore b/db-migration-worker/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..59ba63a8b118bede7ff899f89c73ea481196029b --- /dev/null +++ b/db-migration-worker/.dockerignore @@ -0,0 +1 @@ +.ssh/ diff --git a/db-migration-worker/.gitignore b/db-migration-worker/.gitignore index 87cb01310f0b2e759a0b50e0a0e826028a42aca6..59ba63a8b118bede7ff899f89c73ea481196029b 100644 --- a/db-migration-worker/.gitignore +++ b/db-migration-worker/.gitignore @@ -1 +1 @@ -.ssh/id_rsa +.ssh/ diff --git a/db-migration-worker/.ssh/.dockerignore b/db-migration-worker/.ssh/.dockerignore deleted file mode 100644 index 87cb01310f0b2e759a0b50e0a0e826028a42aca6..0000000000000000000000000000000000000000 --- a/db-migration-worker/.ssh/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -.ssh/id_rsa diff --git a/db-migration-worker/Dockerfile b/db-migration-worker/Dockerfile index d7265ac0216a35b09d4e124fae4f59f445116b9c..865a4c330b2945cba0f0372980967a00704473ad 100644 --- a/db-migration-worker/Dockerfile +++ b/db-migration-worker/Dockerfile @@ -1,8 +1,13 @@ FROM mongo:4 -RUN apt-get update \ - && apt-get -y install --no-install-recommends openssh-client rsync \ +RUN apt-get update && apt-get -y install --no-install-recommends wget apt-transport-https \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -COPY import.sh . - +RUN wget -O - https://debian.neo4j.org/neotechnology.gpg.key | apt-key add - +RUN echo 'deb https://debian.neo4j.org/repo stable/' | tee /etc/apt/sources.list.d/neo4j.list +RUN apt-get update && apt-get -y install --no-install-recommends openjdk-8-jre openssh-client neo4j rsync \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +COPY migration ./migration +COPY migrate.sh /usr/local/bin/migrate +COPY sync_uploads.sh /usr/local/bin/sync_uploads diff --git a/db-migration-worker/migrate.sh b/db-migration-worker/migrate.sh new file mode 100755 index 0000000000000000000000000000000000000000..214da53d89594affa4d9e2e8ce3b86336e71e328 --- /dev/null +++ b/db-migration-worker/migrate.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e +for var in "SSH_USERNAME" "SSH_HOST" "MONGODB_USERNAME" "MONGODB_PASSWORD" "MONGODB_DATABASE" "MONGODB_AUTH_DB" "NEO4J_URI" +do + if [[ -z "${!var}" ]]; then + echo "${var} is undefined" + exit 1 + fi +done + +/migration/mongo/import.sh +/migration/neo4j/import.sh diff --git a/db-migration-worker/import.sh b/db-migration-worker/migration/mongo/import.sh similarity index 67% rename from db-migration-worker/import.sh rename to db-migration-worker/migration/mongo/import.sh index 0251a3582ee67cba052c7e1867c045159eb1a953..7cf3e91e4d34c166baa17ff6265987405fd06b00 100755 --- a/db-migration-worker/import.sh +++ b/db-migration-worker/migration/mongo/import.sh @@ -1,12 +1,5 @@ #!/usr/bin/env bash - -for var in "SSH_USERNAME" "SSH_HOST" "MONGODB_USERNAME" "MONGODB_PASSWORD" "MONGODB_DATABASE" "MONGODB_AUTH_DB" "UPLOADS_DIRECTORY" -do - if [[ -z "${!var}" ]]; then - echo "${var} is undefined" - exit 1 - fi -done +set -e echo "SSH_USERNAME ${SSH_USERNAME}" echo "SSH_HOST ${SSH_HOST}" @@ -14,19 +7,17 @@ echo "MONGODB_USERNAME ${MONGODB_USERNAME}" echo "MONGODB_PASSWORD ${MONGODB_PASSWORD}" echo "MONGODB_DATABASE ${MONGODB_DATABASE}" echo "MONGODB_AUTH_DB ${MONGODB_AUTH_DB}" -echo "UPLOADS_DIRECTORY ${UPLOADS_DIRECTORY}" echo "-------------------------------------------------" mongo ${MONGODB_DATABASE} --eval "db.dropDatabase();" -rm -f /mongo-export/* +rm -rf /mongo-export/* ssh -4 -M -S my-ctrl-socket -fnNT -L 27018:localhost:27017 -l ${SSH_USERNAME} ${SSH_HOST} -mongodump --host localhost -d ${MONGODB_DATABASE} --port 27018 --username ${MONGODB_USERNAME} --password ${MONGODB_PASSWORD} --authenticationDatabase ${MONGODB_AUTH_DB} --gzip --archive | mongorestore --gzip --archive +mongodump --host localhost -d ${MONGODB_DATABASE} --port 27018 --username ${MONGODB_USERNAME} --password ${MONGODB_PASSWORD} --authenticationDatabase ${MONGODB_AUTH_DB} --gzip --archive=/tmp/mongodump.archive +mongorestore --gzip --archive=/tmp/mongodump.archive ssh -S my-ctrl-socket -O check -l ${SSH_USERNAME} ${SSH_HOST} ssh -S my-ctrl-socket -O exit -l ${SSH_USERNAME} ${SSH_HOST} -rsync --archive --update --verbose ${SSH_USERNAME}@${SSH_HOST}:${UPLOADS_DIRECTORY}/* /uploads/ - for collection in "categories" "badges" "users" "contributions" "comments" "follows" "shouts" do mongoexport --db ${MONGODB_DATABASE} --collection $collection --out "/mongo-export/$collection.json" diff --git a/neo4j/import/badges.cql b/db-migration-worker/migration/neo4j/badges.cql similarity index 100% rename from neo4j/import/badges.cql rename to db-migration-worker/migration/neo4j/badges.cql diff --git a/neo4j/import/categories.cql b/db-migration-worker/migration/neo4j/categories.cql similarity index 100% rename from neo4j/import/categories.cql rename to db-migration-worker/migration/neo4j/categories.cql diff --git a/db-migration-worker/migration/neo4j/comments.cql b/db-migration-worker/migration/neo4j/comments.cql new file mode 100644 index 0000000000000000000000000000000000000000..6709acbc8d2225a21fdac92c8006f58ad439b5f8 --- /dev/null +++ b/db-migration-worker/migration/neo4j/comments.cql @@ -0,0 +1,14 @@ +CALL apoc.load.json('file:/mongo-export/comments.json') YIELD value as json +MERGE (comment:Comment {id: json._id["$oid"]}) +ON CREATE SET +comment.content = json.content, +comment.contentExcerpt = json.contentExcerpt, +comment.deleted = json.deleted, +comment.disabled = false +WITH comment, json, json.contributionId as postId +MATCH (post:Post {id: postId}) +WITH comment, post, json.userId as userId +MATCH (author:User {id: userId}) +MERGE (comment)-[:COMMENTS]->(post) +MERGE (author)-[:WROTE]->(comment) +; diff --git a/neo4j/import/contributions.cql b/db-migration-worker/migration/neo4j/contributions.cql similarity index 81% rename from neo4j/import/contributions.cql rename to db-migration-worker/migration/neo4j/contributions.cql index 86226b98fc59e02c05bf2a10fd05495f7728faca..0c7b1895942017148f6b59105d09a9ab2a1613ad 100644 --- a/neo4j/import/contributions.cql +++ b/db-migration-worker/migration/neo4j/contributions.cql @@ -11,13 +11,15 @@ p.createdAt = post.createdAt.`$date`, p.updatedAt = post.updatedAt.`$date`, p.deleted = post.deleted, p.disabled = NOT post.isEnabled -WITH p, post, post.tags AS tags, post.categoryIds as categoryIds -UNWIND tags AS tag +WITH p, post +MATCH (u:User {id: post.userId}) +MERGE (u)-[:WROTE]->(p) +WITH p, post, post.categoryIds as categoryIds UNWIND categoryIds AS categoryId -MATCH (c:Category {id: categoryId}), - (u:User {id: post.userId}) +MATCH (c:Category {id: categoryId}) +MERGE (p)-[:CATEGORIZED]->(c) +WITH p, post.tags AS tags +UNWIND tags AS tag MERGE (t:Tag {id: apoc.create.uuid(), name: tag}) MERGE (p)-[:TAGGED]->(t) -MERGE (u)-[:WROTE]->(p) -MERGE (p)-[:CATEGORIZED]->(c) ; diff --git a/neo4j/import/follows.cql b/db-migration-worker/migration/neo4j/follows.cql similarity index 100% rename from neo4j/import/follows.cql rename to db-migration-worker/migration/neo4j/follows.cql diff --git a/neo4j/import/import.sh b/db-migration-worker/migration/neo4j/import.sh similarity index 68% rename from neo4j/import/import.sh rename to db-migration-worker/migration/neo4j/import.sh index 80b6595fc5aa33f9a038a2f62ffc515e17f3beb3..6f539c50114a682dc0004be7132f6b8f7a8c6816 100755 --- a/neo4j/import/import.sh +++ b/db-migration-worker/migration/neo4j/import.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash +set -e + SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -echo "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r;" | cypher-shell +echo "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r;" | cypher-shell -a $NEO4J_URI for collection in "badges" "categories" "users" "follows" "contributions" "shouts" "comments" do - echo "Import ${collection}..." && cypher-shell < $SCRIPT_DIRECTORY/$collection.cql + echo "Import ${collection}..." && cypher-shell -a $NEO4J_URI < $SCRIPT_DIRECTORY/$collection.cql done diff --git a/neo4j/import/shouts.cql b/db-migration-worker/migration/neo4j/shouts.cql similarity index 100% rename from neo4j/import/shouts.cql rename to db-migration-worker/migration/neo4j/shouts.cql diff --git a/neo4j/import/users.cql b/db-migration-worker/migration/neo4j/users.cql similarity index 100% rename from neo4j/import/users.cql rename to db-migration-worker/migration/neo4j/users.cql diff --git a/db-migration-worker/sync_uploads.sh b/db-migration-worker/sync_uploads.sh new file mode 100755 index 0000000000000000000000000000000000000000..d24936e3bbcb8bfd3d8760ee308005cdc96e3632 --- /dev/null +++ b/db-migration-worker/sync_uploads.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e + +for var in "SSH_USERNAME" "SSH_HOST" "UPLOADS_DIRECTORY" +do + if [[ -z "${!var}" ]]; then + echo "${var} is undefined" + exit 1 + fi +done + +rsync --archive --update --verbose ${SSH_USERNAME}@${SSH_HOST}:${UPLOADS_DIRECTORY}/* /uploads/ diff --git a/docker-compose.db-migration.yml b/docker-compose.db-migration.yml new file mode 100644 index 0000000000000000000000000000000000000000..02f054d1b37e8692e498bacfe6f3f309fdb6c89e --- /dev/null +++ b/docker-compose.db-migration.yml @@ -0,0 +1,36 @@ +version: "3.7" + +services: + backend: + volumes: + - uploads:/nitro-backend/public/uploads + neo4j: + volumes: + - mongo-export:/mongo-export + environment: + - NEO4J_apoc_import_file_enabled=true + db-migration-worker: + build: + context: db-migration-worker + volumes: + - mongo-export:/mongo-export + - uploads:/uploads + - ./db-migration-worker/migration/:/migration + - ./db-migration-worker/.ssh/:/root/.ssh/ + networks: + - hc-network + depends_on: + - backend + environment: + - NEO4J_URI=bolt://neo4j:7687 + - "SSH_USERNAME=${SSH_USERNAME}" + - "SSH_HOST=${SSH_HOST}" + - "MONGODB_USERNAME=${MONGODB_USERNAME}" + - "MONGODB_PASSWORD=${MONGODB_PASSWORD}" + - "MONGODB_AUTH_DB=${MONGODB_AUTH_DB}" + - "MONGODB_DATABASE=${MONGODB_DATABASE}" + - "UPLOADS_DIRECTORY=${UPLOADS_DIRECTORY}" + +volumes: + mongo-export: + uploads: diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 0592b801b9e31356d1dc12de7ffd5217eab7c89b..ef7d52c7e389d68420166c711ea823810a5a3cd8 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -9,36 +9,8 @@ services: volumes: - .:/nitro-backend - /nitro-backend/node_modules - - uploads:/nitro-backend/public/uploads command: yarn run dev neo4j: - volumes: - - mongo-export:/mongo-export - - ./neo4j/import:/var/lib/neo4j/import ports: - 7687:7687 - 7474:7474 - environment: - - NEO4J_apoc_import_file_enabled=true - db-migration-worker: - build: - context: db-migration-worker - volumes: - - mongo-export:/mongo-export - - uploads:/uploads - - ./db-migration-worker/.ssh/:/root/.ssh/ - networks: - - hc-network - environment: - - "SSH_USERNAME=${SSH_USERNAME}" - - "SSH_HOST=${SSH_HOST}" - - "MONGODB_USERNAME=${MONGODB_USERNAME}" - - "MONGODB_PASSWORD=${MONGODB_PASSWORD}" - - "MONGODB_AUTH_DB=${MONGODB_AUTH_DB}" - - "MONGODB_DATABASE=${MONGODB_DATABASE}" - - "UPLOADS_DIRECTORY=${UPLOADS_DIRECTORY}" - command: "--smallfiles --logpath=/dev/null" - -volumes: - mongo-export: - uploads: diff --git a/kubernetes/README.md b/kubernetes/README.md deleted file mode 100644 index ffbf225b216a00d1c17bd5bfc8e77b52ef500ccb..0000000000000000000000000000000000000000 --- a/kubernetes/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# Usage with minikube -Assuming you installed the packages git, docker ([all-distributions](https://docs.docker.com/install/)), minikube ([ubuntu]([minikube](https://computingforgeeks.com/how-to-install-minikube-on-ubuntu-18-04/)), [all-distributions](https://kubernetes.io/docs/tasks/tools/install-minikube/)) and virtualbox here... - -First of all start minikube on your machine: -```sh -minikube start -``` - -You can always get an overview and see what's going on with your minikube: -```sh -minikube dashboard -``` - -From now on stay in your favorite work directory. First let's clone the necessary sources: -```sh -git clone https://github.com/Human-Connection/Nitro-Backend.git -git clone https://github.com/Human-Connection/Nitro-Web.git -``` - -Build Docker images, using the Minikube Docker daemon: -```sh -eval $(minikube docker-env) -docker build -t humanconnection/nitro-backend:latest Nitro-Backend/ -docker build -t humanconnection/neo4j:latest -f Nitro-Backend/Dockerfile.neo4j Nitro-Backend/ -``` - -Check that the image is in Minikube’s Docker registry: -```sh -minikube ssh docker images -``` - -Now change into directory Nitro-Backend/kubernetes and create services and deployments: -```sh -cd Nitro-Backend/kubernetes -kubectl create -f neo4j-deployment.yaml,neo4j-data-persistentvolumeclaim.yaml,backend-deployment.yaml,neo4j-service.json,backend-service.json -``` - -You can see the backend in action with: -```sh -minikube service backend -``` - -### Troubleshoot - -1. If you get an error message along th lines of 'The vboxdrv kernel module is not loaded.' - then you have the same issue i had. to solve this you need to install the propper linux kernel host modules package. Here an example for Manjaro: -https://forum.manjaro.org/t/installing-virtualbox-kernel-modules/6999 -2. When you can not start minikube, try also to remove the cluster with `minikube delete` and start again with `minikube start`. Sometimes this fix startup problems of the cluster. -3. Now again you might run into trouble with an error like 'kubectl could not be found on your path.' In this case run the following command: - ```sh - curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl && chmod +x kubectl && sudo cp kubectl /usr/local/bin/ && rm kubectl - ``` diff --git a/kubernetes/backend-deployment.yaml b/kubernetes/backend-deployment.yaml deleted file mode 100644 index f75920f0d2f2fd2cbf2f17d8411a4e3f45fdf0b6..0000000000000000000000000000000000000000 --- a/kubernetes/backend-deployment.yaml +++ /dev/null @@ -1,41 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - kompose.cmd: kompose convert -f ../docker-compose.yml - kompose.version: 1.16.0 (0c01309) - creationTimestamp: null - labels: - io.kompose.service: backend - name: backend -spec: - replicas: 1 - strategy: {} - template: - metadata: - creationTimestamp: null - labels: - io.kompose.service: backend - spec: - containers: - - env: - - name: CLIENT_URI - value: http://localhost:3000 - - name: GRAPHQL_PORT - value: "4000" - - name: GRAPHQL_URI - value: http://localhost:4000 - - name: JWT_SECRET - value: b/&&7b78BF&fv/Vd - - name: MOCK - value: "false" - - name: NEO4J_URI - value: bolt://neo4j:7687 - image: humanconnection/nitro-backend:latest - name: backend - ports: - - containerPort: 4000 - resources: {} - imagePullPolicy: IfNotPresent - restartPolicy: Always -status: {} diff --git a/kubernetes/backend-service.json b/kubernetes/backend-service.json deleted file mode 100644 index 28581be4525517787d98516a0e646ecb8fc4ec80..0000000000000000000000000000000000000000 --- a/kubernetes/backend-service.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "backend", - "namespace": "default", - "selfLink": "/api/v1/namespaces/default/services/backend", - "uid": "57749bc1-dea3-11e8-ace2-080027b5d96d", - "resourceVersion": "8321", - "creationTimestamp": "2018-11-02T13:29:36Z", - "labels": { - "io.kompose.service": "backend" - } - }, - "spec": { - "ports": [ - { - "protocol": "TCP", - "port": 4000, - "targetPort": 4000, - "nodePort": 32633 - } - ], - "selector": { - "io.kompose.service": "backend" - }, - "clusterIP": "10.110.129.92", - "type": "LoadBalancer", - "sessionAffinity": "None", - "externalTrafficPolicy": "Cluster" - }, - "status": { - "loadBalancer": {} - } -} diff --git a/kubernetes/dashboard-admin.yml b/kubernetes/dashboard-admin.yml deleted file mode 100644 index 5d76d390214b8cece4daf7b164363eee22ce7977..0000000000000000000000000000000000000000 --- a/kubernetes/dashboard-admin.yml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: kubernetes-dashboard - labels: - k8s-app: kubernetes-dashboard -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: -- kind: ServiceAccount - name: kubernetes-dashboard - namespace: kube-system diff --git a/kubernetes/neo4j-data-persistentvolumeclaim.yaml b/kubernetes/neo4j-data-persistentvolumeclaim.yaml deleted file mode 100644 index de9c89e2f00c3c60fe4b108d9b5edaabeb6aeec4..0000000000000000000000000000000000000000 --- a/kubernetes/neo4j-data-persistentvolumeclaim.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - creationTimestamp: null - labels: - io.kompose.service: neo4j-data - name: neo4j-data -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 100Mi -status: {} diff --git a/kubernetes/neo4j-deployment.yaml b/kubernetes/neo4j-deployment.yaml deleted file mode 100644 index 13f4d52e35cf2e91adad8293b3eba2b88185d616..0000000000000000000000000000000000000000 --- a/kubernetes/neo4j-deployment.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: Deployment -metadata: - annotations: - kompose.cmd: kompose convert -f ../docker-compose.yml - kompose.version: 1.16.0 (0c01309) - creationTimestamp: null - labels: - io.kompose.service: neo4j - name: neo4j -spec: - replicas: 1 - strategy: - type: Recreate - template: - metadata: - creationTimestamp: null - labels: - io.kompose.service: neo4j - spec: - containers: - - env: - - name: NEO4J_AUTH - value: none - image: humanconnection/neo4j:latest - name: neo4j - ports: - - containerPort: 7687 - - containerPort: 7474 - resources: {} - imagePullPolicy: IfNotPresent - volumeMounts: - - mountPath: /data - name: neo4j-data - restartPolicy: Always - volumes: - - name: neo4j-data - persistentVolumeClaim: - claimName: neo4j-data -status: {} diff --git a/kubernetes/neo4j-service.json b/kubernetes/neo4j-service.json deleted file mode 100644 index 89ac1036738e40719e46df290ad9f30c358c2cf0..0000000000000000000000000000000000000000 --- a/kubernetes/neo4j-service.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "kind": "Service", - "apiVersion": "v1", - "metadata": { - "name": "neo4j", - "namespace": "default", - "selfLink": "/api/v1/namespaces/default/services/neo4j", - "uid": "57de6181-dea3-11e8-ace2-080027b5d96d", - "resourceVersion": "8326", - "creationTimestamp": "2018-11-02T13:29:37Z", - "labels": { - "io.kompose.service": "neo4j" - } - }, - "spec": { - "ports": [ - { - "name": "port-1", - "protocol": "TCP", - "port": 7687, - "targetPort": 7687, - "nodePort": 30116 - }, - { - "name": "port-2", - "protocol": "TCP", - "port": 7474, - "targetPort": 7474, - "nodePort": 32658 - } - ], - "selector": { - "io.kompose.service": "neo4j" - }, - "clusterIP": "10.108.175.122", - "type": "LoadBalancer", - "sessionAffinity": "None", - "externalTrafficPolicy": "Cluster" - }, - "status": { - "loadBalancer": {} - } -} diff --git a/neo4j/Dockerfile b/neo4j/Dockerfile index 07344b47b268eaab75acc120a1e2857e61e2d47b..cb7fd228f75a148eb6c257858eb0a67cf92a775b 100644 --- a/neo4j/Dockerfile +++ b/neo4j/Dockerfile @@ -1,3 +1,2 @@ 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 ./import diff --git a/neo4j/import/comments.cql b/neo4j/import/comments.cql deleted file mode 100644 index 16537b73097acbb2ebfdfb0c20ced9718f378ac3..0000000000000000000000000000000000000000 --- a/neo4j/import/comments.cql +++ /dev/null @@ -1,12 +0,0 @@ -CALL apoc.load.json('file:/mongo-export/comments.json') YIELD value as comment -MERGE (c:Comment {id: comment._id["$oid"]}) -ON CREATE SET -c.content = comment.content, -c.contentExcerpt = comment.contentExcerpt, -c.deleted = comment.deleted, -c.disabled = false -WITH comment -MATCH (p:Post {id: comment.contributionId}), (u:User {id: comment.userId}) -MERGE (c)-[:COMMENTS]->(p) -MERGE (u)-[:WROTE]->(c) -; diff --git a/neo4j/import/todo b/neo4j/import/todo deleted file mode 100644 index 139597f9cb07c5d48bed18984ec4747f4b4f3438..0000000000000000000000000000000000000000 --- a/neo4j/import/todo +++ /dev/null @@ -1,2 +0,0 @@ - -