relaxo-model 0.4.3 → 0.4.4
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/relaxo/model/base.rb +1 -1
- data/lib/relaxo/model/component.rb +5 -19
- data/lib/relaxo/model/document.rb +12 -17
- data/lib/relaxo/model/properties/attribute.rb +4 -6
- data/lib/relaxo/model/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e37c4bdf8e7434134f7b4b4e0a8e28c0a677fadb
|
4
|
+
data.tar.gz: 7cd780a667b5e298f242a6388a7d8c662ccd9732
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfb8e303f72fb22c760a2f60db729d3432ec70b43977d1fe6d87b9d2151ec346df0dc9e564ec02061a6f41bfee3d95ba2a984378fc73ea24ceca79dc9e6b8ce4
|
7
|
+
data.tar.gz: 0cf6e81f2abac06015f0d91b2cd863874ada45c5fe759e3d79438e1c5f1a3cd1598a7f4ae1d9b864e197f0f139cf7940dd4786547463a2c0e952204fd8fea106
|
data/lib/relaxo/model/base.rb
CHANGED
@@ -22,16 +22,6 @@ require 'relaxo/model/base'
|
|
22
22
|
|
23
23
|
module Relaxo
|
24
24
|
module Model
|
25
|
-
class Error
|
26
|
-
def initialize(key, exception)
|
27
|
-
@key = key
|
28
|
-
@exception = exception
|
29
|
-
end
|
30
|
-
|
31
|
-
attr :key
|
32
|
-
attr :exception
|
33
|
-
end
|
34
|
-
|
35
25
|
module Component
|
36
26
|
def self.included(child)
|
37
27
|
# $stderr.puts "#{self} included -> #{child} extend Base"
|
@@ -97,18 +87,16 @@ module Relaxo
|
|
97
87
|
end
|
98
88
|
end
|
99
89
|
|
100
|
-
def
|
101
|
-
|
90
|
+
def validate
|
91
|
+
# Do nothing :)
|
92
|
+
end
|
102
93
|
|
94
|
+
def flatten!
|
103
95
|
# Flatten changed properties:
|
104
96
|
self.class.properties.each do |key, klass|
|
105
97
|
if @changed.include? key
|
106
98
|
if klass
|
107
|
-
|
108
|
-
@attributes[key] = klass.convert_to_primative(@changed.delete(key))
|
109
|
-
rescue StandardError => error
|
110
|
-
errors << Error.new(key, error)
|
111
|
-
end
|
99
|
+
@attributes[key] = klass.convert_to_primative(@changed.delete(key))
|
112
100
|
else
|
113
101
|
@attributes[key] = @changed.delete(key)
|
114
102
|
end
|
@@ -121,8 +109,6 @@ module Relaxo
|
|
121
109
|
end
|
122
110
|
|
123
111
|
@changed = {}
|
124
|
-
|
125
|
-
errors
|
126
112
|
end
|
127
113
|
|
128
114
|
def to_hash
|
@@ -22,20 +22,6 @@ require 'relaxo/model/component'
|
|
22
22
|
|
23
23
|
module Relaxo
|
24
24
|
module Model
|
25
|
-
class ValidationErrors < StandardError
|
26
|
-
def self.message_for_errors(errors)
|
27
|
-
errors.map{|error| "#{error.key} (#{error.exception.message})"}.join(', ')
|
28
|
-
end
|
29
|
-
|
30
|
-
def initialize(errors)
|
31
|
-
super "Model validation errors occurred: #{self.class.message_for_errors(errors)}"
|
32
|
-
|
33
|
-
@errors = errors
|
34
|
-
end
|
35
|
-
|
36
|
-
attr :errors
|
37
|
-
end
|
38
|
-
|
39
25
|
module Document
|
40
26
|
TYPE = 'type'
|
41
27
|
|
@@ -112,12 +98,17 @@ module Relaxo
|
|
112
98
|
return clone
|
113
99
|
end
|
114
100
|
|
115
|
-
# Save the model object
|
101
|
+
# Save the model object.
|
116
102
|
def save
|
103
|
+
return if @changed.empty?
|
104
|
+
|
117
105
|
before_save
|
118
106
|
|
119
|
-
errors = self.
|
120
|
-
|
107
|
+
if errors = self.validate
|
108
|
+
return errors
|
109
|
+
end
|
110
|
+
|
111
|
+
self.flatten!
|
121
112
|
|
122
113
|
@database.save(@attributes)
|
123
114
|
|
@@ -149,6 +140,10 @@ module Relaxo
|
|
149
140
|
def <=> other
|
150
141
|
self.id <=> other.id
|
151
142
|
end
|
143
|
+
|
144
|
+
def empty?
|
145
|
+
@attributes.empty?
|
146
|
+
end
|
152
147
|
end
|
153
148
|
end
|
154
149
|
end
|
@@ -53,16 +53,14 @@ module Relaxo
|
|
53
53
|
|
54
54
|
def initialize(klass, &serialization)
|
55
55
|
@klass = klass
|
56
|
-
|
57
|
-
raise ArgumentError.new("Klass doesn't respond to parse!") unless @klass.respond_to? :parse
|
58
56
|
end
|
59
57
|
|
60
58
|
def convert_to_primative(value)
|
61
|
-
value
|
59
|
+
@klass.dump(value)
|
62
60
|
end
|
63
61
|
|
64
62
|
def convert_from_primative(database, value)
|
65
|
-
@klass.
|
63
|
+
@klass.load(value)
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
@@ -78,7 +76,7 @@ module Relaxo
|
|
78
76
|
end
|
79
77
|
|
80
78
|
def convert_to_primative(value)
|
81
|
-
if value
|
79
|
+
if value.nil? or value.empty?
|
82
80
|
nil
|
83
81
|
else
|
84
82
|
@klass.convert_to_primative(value)
|
@@ -86,7 +84,7 @@ module Relaxo
|
|
86
84
|
end
|
87
85
|
|
88
86
|
def convert_from_primative(database, value)
|
89
|
-
if value
|
87
|
+
if value.nil? or value.empty?
|
90
88
|
nil
|
91
89
|
else
|
92
90
|
@klass.convert_from_primative(database, value)
|
data/lib/relaxo/model/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaxo-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: relaxo
|
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|
114
114
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.5.2
|
116
116
|
signing_key:
|
117
117
|
specification_version: 4
|
118
118
|
summary: A model layer for CouchDB with minimal global state.
|