diff --git a/README.md b/README.md index b3b4764b7..b9b90b0a8 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ _.env_ ```yaml NEO4J_URI=bolt://localhost:7687 -NEO4J_USER=neo4j +NEO4J_USERNAME=neo4j NEO4J_PASSWORD=letmein ``` diff --git a/docker-compose.override.yml b/docker-compose.override.yml index ef7d52c7e..b972c31f6 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -11,6 +11,13 @@ services: - /nitro-backend/node_modules command: yarn run dev neo4j: + environment: + - NEO4J_AUTH=none ports: - 7687:7687 - 7474:7474 + volumes: + - neo4j-data:/data + +volumes: + neo4j-data: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 000000000..c4f5dc4f5 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,9 @@ +version: "3.7" + +services: + neo4j: + environment: + - NEO4J_PASSWORD=letmein + backend: + environment: + - NEO4J_PASSWORD=letmein diff --git a/docker-compose.yml b/docker-compose.yml index 6905bb893..1e8c9158c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,14 +27,7 @@ services: context: neo4j networks: - hc-network - volumes: - - neo4j-data:/data - environment: - - NEO4J_AUTH=none networks: hc-network: name: hc-network - -volumes: - neo4j-data: diff --git a/neo4j/Dockerfile b/neo4j/Dockerfile index cb7fd228f..f6e71811b 100644 --- a/neo4j/Dockerfile +++ b/neo4j/Dockerfile @@ -1,2 +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 migrate.sh /usr/local/bin/migrate diff --git a/neo4j/migrate.sh b/neo4j/migrate.sh new file mode 100755 index 000000000..30a58c306 --- /dev/null +++ b/neo4j/migrate.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -e +echo "CALL dbms.security.changePassword('${NEO4J_PASSWORD}');" | cypher-shell --username neo4j --password neo4j +echo 'CALL db.index.fulltext.createNodeIndex("full_text_search",["Post"],["title", "content"]);' | cypher-shell --username neo4j --password $NEO4J_PASSWORD diff --git a/src/bootstrap/neo4j.js b/src/bootstrap/neo4j.js index 935449a0a..62f5f326d 100644 --- a/src/bootstrap/neo4j.js +++ b/src/bootstrap/neo4j.js @@ -1,18 +1,18 @@ -import { v1 as neo4j } from 'neo4j-driver' -import dotenv from 'dotenv' +import { v1 as neo4j } from "neo4j-driver"; +import dotenv from "dotenv"; -dotenv.config() +dotenv.config(); -let driver +let driver; -export function getDriver (options = {}) { +export function getDriver(options = {}) { const { - uri = process.env.NEO4J_URI || 'bolt://localhost:7687', - username = process.env.NEO4J_USERNAME || 'neo4j', - password = process.env.NEO4J_PASSWORD || 'neo4j' - } = options + uri = process.env.NEO4J_URI || "bolt://localhost:7687", + username = process.env.NEO4J_USERNAME || "neo4j", + password = process.env.NEO4J_PASSWORD || "neo4j" + } = options; if (!driver) { - driver = neo4j.driver(uri, neo4j.auth.basic(username, password)) + driver = neo4j.driver(uri, neo4j.auth.basic(username, password)); } - return driver + return driver; } diff --git a/src/graphql-schema.js b/src/graphql-schema.js index 8b5f369e0..c525d67d7 100644 --- a/src/graphql-schema.js +++ b/src/graphql-schema.js @@ -34,7 +34,7 @@ export const query = (cypher, session) => { }) }) } -const queryOne = (cypher, session) => { +export const queryOne = (cypher, session) => { return new Promise((resolve, reject) => { query(cypher, session) .then(res => { diff --git a/src/schema.graphql b/src/schema.graphql index 95e7b3d48..472b345d7 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -4,7 +4,7 @@ type Query { findPosts(filter: String!, limit: Int = 10): [Post]! @cypher( statement: """ CALL db.index.fulltext.queryNodes( - 'postTitleAndContent', $filter+'~') + 'full_text_search', $filter+'~') YIELD node AS node RETURN node ORDER BY node.createdAt DESC