diograph-store 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/diograph_store/store.rb +92 -0
  3. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1fd13d96fb36c0fa7b6717448251acd034a83ff3
4
- data.tar.gz: 19d1068cf3c15049a0336193fbfa20e02690e41c
3
+ metadata.gz: 53f5297681d6ff054f516108056e3a6800439d42
4
+ data.tar.gz: 82ddcbc2e2eb1db07283c0e65a23b6fabd84b964
5
5
  SHA512:
6
- metadata.gz: bfd33e24a44bf43ffd935d33b5b619feabb5e4022153a4136d568ef5923827173d6293f023c39874e4d501129cb823c6c9b98e0ad6167b50a8ff6d1c94bb3d78
7
- data.tar.gz: 661ab47437db96f719c55f2f5cf8d1466df46784579e2eadc05a8405892eaa886c8bfb8a6794225e444f0e797414d4004b71ad02d986a9d94fbd2e5461906d34
6
+ metadata.gz: f08a3d6d4d07a13867582cca1a0c79dfaaeb7bf12fa0cb959d46ca3dd12c779092bd44707cecd4aac55f2db83376b9620894b8d8a30a5a0fc2eb580c904fb10f
7
+ data.tar.gz: 573766ad639b184c9b9de431333f6b3aa675e742ff20a4548e3f0c89dcfdaf7cc9a7f1f91bfc8d9cc29a0b5a8d690302bb0801ae8f0362560b1bfb018fbbf537
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'diograph_store/diory_store'
4
+ require 'diograph_store/connection_store'
5
+ require 'diograph_store/diory_connection_store'
6
+
7
+ ### DOKUMENTAATIO
8
+ class Store
9
+
10
+ STORE_TYPES = ['diories', 'connections'].freeze
11
+
12
+ def initialize(type:, object_store: DiographStore::DiographStore.new)
13
+ unless STORE_TYPES.include?(type)
14
+ raise "Invalid store type. Should be one of these: #{STORE_TYPES}"
15
+ end
16
+
17
+ case type
18
+ when 'connections'
19
+ @store = ConnectionStore.new(object_store)
20
+ when 'diories'
21
+ @store = DioryStore.new(object_store)
22
+ end
23
+
24
+ @objects = {}
25
+ end
26
+
27
+ def get(id)
28
+ return @objects[id] unless @objects[id].nil?
29
+
30
+ object = @store.get(id)
31
+ return nil if object.nil?
32
+
33
+ @objects[object.id] = object
34
+ end
35
+
36
+ def self.store_data(response)
37
+ extracted_response = extract_response(response)
38
+
39
+ extracted_response['diories'].each do |diory_data|
40
+ DioryStore.new.save(
41
+ diory_id: diory_data['diory-id'],
42
+ diory_data: diory_data
43
+ )
44
+ end
45
+
46
+ extracted_response['connections'].each do |connection_data|
47
+ # Save connection to connections_store
48
+ ConnectionStore.new.save(
49
+ connection_id: connection_data['connection-id'],
50
+ connection_data: connection_data
51
+ )
52
+
53
+ # Add connection into diory_connections_store (if not already there)
54
+ add_connection_into_diory_connections_store(connection_data)
55
+ end
56
+ end
57
+
58
+ def self.extract_response(data)
59
+ extracted_response = {
60
+ 'diories' => [],
61
+ 'connections' => []
62
+ }
63
+
64
+ objects = [data['data']] + (data['included'] || [])
65
+
66
+ objects.each do |object|
67
+ object['attributes']['id'] = object['id'] if object['attributes']
68
+ if object['type'] == 'diories'
69
+ extracted_response['diories'] << object['attributes']
70
+ elsif object['type'] == 'connections'
71
+ extracted_response['connections'] << object['attributes']
72
+ end
73
+ end
74
+
75
+ extracted_response
76
+ end
77
+
78
+ def self.add_connection_into_diory_connections_store(connection_data)
79
+ # Save connection for from_diory
80
+ DioryConnectionStore.new.save(
81
+ diory_id: connection_data['from-diory-diory-id'],
82
+ connection_id: connection_data['connection-id']
83
+ )
84
+
85
+ ### Don't save opposite direction connections at all
86
+ # Save connection for to_diory
87
+ # DioryConnectionStore.new.save(
88
+ # diory_id: connection_data['to-diory-diory-id'],
89
+ # connection_id: connection_data['connection-id']
90
+ # )
91
+ end
92
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diograph-store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jouni Alanen
@@ -74,6 +74,7 @@ extra_rdoc_files: []
74
74
  files:
75
75
  - lib/diograph-store.rb
76
76
  - lib/diograph_store/diograph_api_request.rb
77
+ - lib/diograph_store/store.rb
77
78
  homepage: http://dioryme.github.io
78
79
  licenses: []
79
80
  metadata: {}