From 4d336ceface783c255e62220cfa76812630ff1a1 Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Sat, 15 Oct 2016 12:37:43 +0200
Subject: [PATCH] Add sync command for neo4j, fix configuration, add neo4j to
 docker-compose, fix seed

---
 .dockerignore           | 1 +
 .env.production.sample  | 2 ++
 app/models/follow.rb    | 4 ++++
 db/seeds.rb             | 2 +-
 docker-compose.yml      | 6 ++++++
 lib/tasks/mastodon.rake | 7 +++++++
 6 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/.dockerignore b/.dockerignore
index fad29fc260..7892e503c9 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -4,3 +4,4 @@ public/system
 public/assets
 node_modules
 storybook
+neo4j
diff --git a/.env.production.sample b/.env.production.sample
index 070aa0c3a4..b68ba523cd 100644
--- a/.env.production.sample
+++ b/.env.production.sample
@@ -6,6 +6,8 @@ DB_USER=postgres
 DB_NAME=postgres
 DB_PASS=
 DB_PORT=5432
+NEO4J_HOST=neo4j
+NEO4J_PORT=7474
 
 # Federation
 LOCAL_DOMAIN=example.com
diff --git a/app/models/follow.rb b/app/models/follow.rb
index 95b6bd146b..656b28d354 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -26,6 +26,10 @@ class Follow < ApplicationRecord
   after_create  :add_to_graph
   after_destroy :remove_from_graph
 
+  def sync!
+    add_to_graph
+  end
+
   private
 
   def add_to_graph
diff --git a/db/seeds.rb b/db/seeds.rb
index c2bf6a16e9..7e8ee8e445 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,2 +1,2 @@
 web_app = Doorkeeper::Application.new(name: 'Web', superapp: true, redirect_uri: Doorkeeper.configuration.native_redirect_uri)
-web_app.save(validate: false)
+web_app.save!
diff --git a/docker-compose.yml b/docker-compose.yml
index b3b233713e..18af16b604 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -4,6 +4,10 @@ services:
     image: postgres
   redis:
     image: redis
+  neo4j:
+    image: neo4j
+    environment:
+      - NEO4J_AUTH=none
   app:
     build: .
     env_file: .env.production
@@ -15,6 +19,7 @@ services:
     depends_on:
       - db
       - redis
+      - neo4j
     volumes:
       - ./public/assets:/mastodon/public/assets
       - ./public/system:/mastodon/public/system
@@ -24,5 +29,6 @@ services:
     depends_on:
       - db
       - redis
+      - neo4j
     volumes:
       - ./public/system:/mastodon/public/system
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 29e4494c40..aa07c07385 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -41,4 +41,11 @@ namespace :mastodon do
       $redis.keys('feed:*').each { |key| $redis.del(key) }
     end
   end
+
+  namespace :graphs do
+    desc 'Syncs all follow relationships to Neo4J'
+    task sync: :environment do
+      Follow.find_each(&:sync!)
+    end
+  end
 end
-- 
GitLab