hypostasis 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hypostasis/column_group.rb +6 -34
- data/lib/hypostasis/column_group/findable.rb +8 -7
- data/lib/hypostasis/document.rb +6 -33
- data/lib/hypostasis/shared.rb +33 -0
- data/lib/hypostasis/{document → shared}/belongs_to.rb +1 -1
- data/lib/hypostasis/{document → shared}/has_many.rb +1 -1
- data/lib/hypostasis/{document → shared}/has_one.rb +1 -1
- data/lib/hypostasis/version.rb +1 -1
- metadata +5 -7
- data/lib/hypostasis/column_group/belongs_to.rb +0 -18
- data/lib/hypostasis/column_group/has_many.rb +0 -17
- data/lib/hypostasis/column_group/has_one.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56eb1dad44b0fb9b42de8fb725486b999ff653f8
|
4
|
+
data.tar.gz: fd2f53d2a2ef5e7179e035e077a39bab528497cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 308cceadb1be00576df9121377e48ce88e7e63f453875a60bca80a0f83ce53b349c00ca25e4cdd9902726605e8a2b5296dc6001693241f7079fdcdd60259852e
|
7
|
+
data.tar.gz: 155a90c17f1d50273bcf7b88eda970ac24a8f1a3f39f36df745c9c21f081fa50b8c12d4fb55620dc493e3b44bc05de67d2ac3156c41e820a4cb30fe9b83a1042
|
@@ -1,49 +1,21 @@
|
|
1
|
-
require 'hypostasis/shared
|
2
|
-
require 'hypostasis/shared/namespaced'
|
3
|
-
require 'hypostasis/shared/fields'
|
4
|
-
require 'hypostasis/shared/indexes'
|
5
|
-
|
1
|
+
require 'hypostasis/shared'
|
6
2
|
require 'hypostasis/column_group/persistence'
|
7
3
|
require 'hypostasis/column_group/findable'
|
8
|
-
require 'hypostasis/column_group/belongs_to'
|
9
|
-
require 'hypostasis/column_group/has_one'
|
10
|
-
require 'hypostasis/column_group/has_many'
|
11
4
|
|
12
5
|
module Hypostasis::ColumnGroup
|
13
6
|
extend ActiveSupport::Concern
|
14
7
|
|
8
|
+
include Hypostasis::Shared
|
15
9
|
include Hypostasis::Shared::Utilities
|
16
10
|
include Hypostasis::Shared::Namespaced
|
17
11
|
include Hypostasis::Shared::Fields
|
18
12
|
include Hypostasis::Shared::Indexes
|
13
|
+
include Hypostasis::Shared::BelongsTo
|
14
|
+
include Hypostasis::Shared::HasOne
|
15
|
+
include Hypostasis::Shared::HasMany
|
19
16
|
|
20
17
|
include Hypostasis::ColumnGroup::Persistence
|
21
18
|
include Hypostasis::ColumnGroup::Findable
|
22
19
|
|
23
|
-
|
24
|
-
include Hypostasis::ColumnGroup::HasOne
|
25
|
-
include Hypostasis::ColumnGroup::HasMany
|
26
|
-
|
27
|
-
attr_reader :id
|
28
|
-
|
29
|
-
def initialize(*attributes)
|
30
|
-
self.class.namespace.open
|
31
|
-
|
32
|
-
@fields = {}
|
33
|
-
self.class.fields.each {|name| @fields[name] = nil}
|
34
|
-
attributes.each {|hsh| hsh.each {|name, value| @fields[name.to_sym] = value}}
|
35
|
-
self
|
36
|
-
end
|
37
|
-
|
38
|
-
def generate_id
|
39
|
-
@id ||= SecureRandom.uuid
|
40
|
-
end
|
41
|
-
|
42
|
-
def set_id(id)
|
43
|
-
@id ||= id.to_s
|
44
|
-
end
|
45
|
-
|
46
|
-
module ClassMethods
|
47
|
-
include Hypostasis::DataModels::Utilities
|
48
|
-
end
|
20
|
+
module ClassMethods; end
|
49
21
|
end
|
@@ -29,17 +29,18 @@ module Hypostasis::ColumnGroup
|
|
29
29
|
|
30
30
|
def reconstitute_column_group(keys)
|
31
31
|
attributes = {}
|
32
|
-
keys.each
|
33
|
-
attribute_tuple = key.key.split('\\')[2]
|
34
|
-
next if attribute_tuple.nil?
|
35
|
-
unpacked_key = Hypostasis::Tuple.unpack(attribute_tuple)
|
36
|
-
raw_value = key.value
|
37
|
-
attributes[unpacked_key.to_a[0].to_sym] = reconstitute_value(unpacked_key, raw_value)
|
38
|
-
end
|
32
|
+
keys.each {|key| attributes.merge(parse_key(key))}
|
39
33
|
document = self.new(attributes)
|
40
34
|
document.set_id(Hypostasis::Tuple.unpack(keys.first.key.split('\\')[1]).to_a[1])
|
41
35
|
document
|
42
36
|
end
|
37
|
+
|
38
|
+
def parse_key(key)
|
39
|
+
attribute_tuple = key.key.split('\\')[2]
|
40
|
+
return {} if attribute_tuple.nil?
|
41
|
+
unpacked_key = Hypostasis::Tuple.unpack(attribute_tuple)
|
42
|
+
{unpacked_key.to_a[0].to_sym => reconstitute_value(unpacked_key, key.value)}
|
43
|
+
end
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
data/lib/hypostasis/document.rb
CHANGED
@@ -1,52 +1,25 @@
|
|
1
|
-
require 'hypostasis/shared
|
2
|
-
require 'hypostasis/shared/namespaced'
|
3
|
-
require 'hypostasis/shared/fields'
|
4
|
-
require 'hypostasis/shared/indexes'
|
5
|
-
|
1
|
+
require 'hypostasis/shared'
|
6
2
|
require 'hypostasis/document/persistence'
|
7
3
|
require 'hypostasis/document/findable'
|
8
|
-
require 'hypostasis/document/belongs_to'
|
9
|
-
require 'hypostasis/document/has_one'
|
10
|
-
require 'hypostasis/document/has_many'
|
11
4
|
|
12
5
|
module Hypostasis::Document
|
13
6
|
extend ActiveSupport::Concern
|
14
7
|
|
8
|
+
include Hypostasis::Shared
|
15
9
|
include Hypostasis::Shared::Utilities
|
16
10
|
include Hypostasis::Shared::Namespaced
|
17
11
|
include Hypostasis::Shared::Fields
|
18
12
|
include Hypostasis::Shared::Indexes
|
13
|
+
include Hypostasis::Shared::BelongsTo
|
14
|
+
include Hypostasis::Shared::HasOne
|
15
|
+
include Hypostasis::Shared::HasMany
|
19
16
|
|
20
17
|
include Hypostasis::Document::Persistence
|
21
18
|
include Hypostasis::Document::Findable
|
22
|
-
include Hypostasis::Document::BelongsTo
|
23
|
-
include Hypostasis::Document::HasOne
|
24
|
-
include Hypostasis::Document::HasMany
|
25
|
-
|
26
|
-
attr_reader :id
|
27
|
-
|
28
|
-
def initialize(*attributes)
|
29
|
-
self.class.namespace.open
|
30
|
-
|
31
|
-
@fields = {}
|
32
|
-
self.class.fields.each {|name| @fields[name] = nil}
|
33
|
-
attributes.each {|hsh| hsh.each {|name, value| @fields[name.to_sym] = value}}
|
34
|
-
self
|
35
|
-
end
|
36
|
-
|
37
|
-
def generate_id
|
38
|
-
@id ||= SecureRandom.uuid
|
39
|
-
end
|
40
|
-
|
41
|
-
def set_id(id)
|
42
|
-
@id ||= id.to_s
|
43
|
-
end
|
44
19
|
|
45
20
|
def to_bson
|
46
21
|
@fields.to_bson
|
47
22
|
end
|
48
23
|
|
49
|
-
module ClassMethods
|
50
|
-
include Hypostasis::DataModels::Utilities
|
51
|
-
end
|
24
|
+
module ClassMethods; end
|
52
25
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'hypostasis/shared/utilities'
|
2
|
+
require 'hypostasis/shared/namespaced'
|
3
|
+
require 'hypostasis/shared/fields'
|
4
|
+
require 'hypostasis/shared/indexes'
|
5
|
+
require 'hypostasis/shared/belongs_to'
|
6
|
+
require 'hypostasis/shared/has_one'
|
7
|
+
require 'hypostasis/shared/has_many'
|
8
|
+
|
9
|
+
module Hypostasis::Shared
|
10
|
+
extend ActiveSupport::Concern
|
11
|
+
|
12
|
+
attr_reader :id
|
13
|
+
|
14
|
+
def initialize(*attributes)
|
15
|
+
self.class.namespace.open
|
16
|
+
@fields = {}
|
17
|
+
self.class.fields.each {|name| @fields[name] = nil}
|
18
|
+
attributes.each {|hsh| hsh.each {|name, value| @fields[name.to_sym] = value}}
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_id
|
23
|
+
@id ||= SecureRandom.uuid
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_id(id)
|
27
|
+
@id ||= id.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
module ClassMethods
|
31
|
+
include Hypostasis::DataModels::Utilities
|
32
|
+
end
|
33
|
+
end
|
data/lib/hypostasis/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hypostasis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Thompson
|
@@ -126,10 +126,7 @@ files:
|
|
126
126
|
- hypostasis.gemspec
|
127
127
|
- lib/hypostasis.rb
|
128
128
|
- lib/hypostasis/column_group.rb
|
129
|
-
- lib/hypostasis/column_group/belongs_to.rb
|
130
129
|
- lib/hypostasis/column_group/findable.rb
|
131
|
-
- lib/hypostasis/column_group/has_many.rb
|
132
|
-
- lib/hypostasis/column_group/has_one.rb
|
133
130
|
- lib/hypostasis/column_group/persistence.rb
|
134
131
|
- lib/hypostasis/connection.rb
|
135
132
|
- lib/hypostasis/data_models.rb
|
@@ -139,10 +136,7 @@ files:
|
|
139
136
|
- lib/hypostasis/data_models/key_value.rb
|
140
137
|
- lib/hypostasis/data_models/utilities.rb
|
141
138
|
- lib/hypostasis/document.rb
|
142
|
-
- lib/hypostasis/document/belongs_to.rb
|
143
139
|
- lib/hypostasis/document/findable.rb
|
144
|
-
- lib/hypostasis/document/has_many.rb
|
145
|
-
- lib/hypostasis/document/has_one.rb
|
146
140
|
- lib/hypostasis/document/persistence.rb
|
147
141
|
- lib/hypostasis/errors.rb
|
148
142
|
- lib/hypostasis/ext/bson/date.rb
|
@@ -150,7 +144,11 @@ files:
|
|
150
144
|
- lib/hypostasis/key.rb
|
151
145
|
- lib/hypostasis/key_path.rb
|
152
146
|
- lib/hypostasis/namespace.rb
|
147
|
+
- lib/hypostasis/shared.rb
|
148
|
+
- lib/hypostasis/shared/belongs_to.rb
|
153
149
|
- lib/hypostasis/shared/fields.rb
|
150
|
+
- lib/hypostasis/shared/has_many.rb
|
151
|
+
- lib/hypostasis/shared/has_one.rb
|
154
152
|
- lib/hypostasis/shared/indexes.rb
|
155
153
|
- lib/hypostasis/shared/namespaced.rb
|
156
154
|
- lib/hypostasis/shared/utilities.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Hypostasis::ColumnGroup
|
2
|
-
module BelongsTo
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
module ClassMethods
|
6
|
-
def belongs_to(klass)
|
7
|
-
field_name = "#{klass.to_s}_id"
|
8
|
-
accessor_name = klass.to_s
|
9
|
-
parent_klass = klass.to_s.classify
|
10
|
-
self.class_eval do
|
11
|
-
field field_name.to_sym
|
12
|
-
index field_name.to_sym
|
13
|
-
define_method(accessor_name) { parent_klass.constantize.find(self.send(field_name.to_sym)) }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Hypostasis::ColumnGroup
|
2
|
-
module HasMany
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
module ClassMethods
|
6
|
-
def has_many(klass)
|
7
|
-
singular_klass = klass.to_s.singularize
|
8
|
-
accessor_name = klass.to_s
|
9
|
-
child_klass = singular_klass.to_s.classify
|
10
|
-
self_klass = "#{self.to_s.underscore}_id".to_sym
|
11
|
-
self.class_eval do
|
12
|
-
define_method(accessor_name) { child_klass.constantize.find_where(self_klass => @id) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module Hypostasis::ColumnGroup
|
2
|
-
module HasOne
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
module ClassMethods
|
6
|
-
def has_one(klass)
|
7
|
-
accessor_name = klass.to_s
|
8
|
-
child_klass = klass.to_s.classify
|
9
|
-
self_klass = "#{self.to_s.underscore}_id".to_sym
|
10
|
-
self.class_eval do
|
11
|
-
define_method(accessor_name) { child_klass.constantize.find_where(self_klass => @id).first }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|