From e21a3fe0cd91dfeae76bce4d58c7611e78b60fbf Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 14 Oct 2016 23:10:07 +0200 Subject: Adding sync of follow relationships to Neo4J, accounts/suggestions API --- app/models/follow.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'app/models/follow.rb') diff --git a/app/models/follow.rb b/app/models/follow.rb index 4f47580e1..1c52f24c0 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -22,4 +22,28 @@ class Follow < ApplicationRecord def title destroyed? ? "#{account.acct} is no longer following #{target_account.acct}" : "#{account.acct} started following #{target_account.acct}" end + + after_create :add_to_graph + after_destroy :remove_from_graph + + private + + def add_to_graph + neo = Neography::Rest.new + + a = neo.create_unique_node('account_index', 'Account', account_id.to_s, account_id: account_id) + b = neo.create_unique_node('account_index', 'Account', target_account_id.to_s, account_id: target_account_id) + + neo.create_unique_relationship('follow_index', 'Follow', id.to_s, 'follows', a, b) + rescue Neography::NeographyError => e + Rails.logger.error e + end + + def remove_from_graph + neo = Neography::Rest.new + rel = neo.get_relationship_index('follow_index', 'Follow', id.to_s) + neo.delete_relationship(rel) + rescue Neography::NeographyError => e + Rails.logger.error e + end end -- cgit