34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'app/models/graph_starter/view.rb', line 34
def self.record_view(session, target, properties = {})
test_view = new(properties.merge(from_node: session, to_node: target))
return test_view.errors if !test_view.valid?
query = <<-CYPHER
MATCH (session), (target)
WHERE ID(session) = {session_id} AND ID(target) = {target_id}
MERGE (session)-[view_rel:VIEWED]->(target)
ON CREATE SET
view_rel.created_at = {timestamp},
view_rel.count = 0
SET
view_rel.browser_string = {browser_string},
view_rel.ip_address = {ip_address},
view_rel.viewed_at = {viewed_at},
view_rel.updated_at = {timestamp},
view_rel.count = view_rel.count + 1
CYPHER
Neo4j::Session.current.query(query,
session_id: session.neo_id,
target_id: target.neo_id,
browser_string: properties[:browser_string],
ip_address: properties[:ip_address],
viewed_at: Time.now,
timestamp: Time.now.to_i)
end
|