dynamord 0.0.2 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '0529ed61553454c5740cad93d4fe367c55bafff4'
4
- data.tar.gz: 3ff4ab1445c74118f8cc20dfb3d4b5e45565892b
3
+ metadata.gz: 0717106b37db963380dd513a9c01438d19604fe1
4
+ data.tar.gz: 7d439e5161400da02a64387e874bbef512af1eca
5
5
  SHA512:
6
- metadata.gz: 4b0e04212dd05fb91f1fe73d5c89f570dc5a52d4fbdd2d89f3042dfea8dc4af1bafc2a74c586b916f460cba80637b4393da2d9411a7afb05120042104c3cb787
7
- data.tar.gz: f34fc4132f7e89f8fc2c4196e757953f8041fb238dc349720f563ac5a6a42077cc93eaa0d0c0f1a5a6395aad57e801f357770f2fdd0e109b5b4ab7fec44049e0
6
+ metadata.gz: 683fe5e8e183155af3378d0d46401dec8e0520cada8e7a066486a1369783610a0641b5c4920b8e62befa4d52867eff4c9e13af94929069250a44c51b9053b803
7
+ data.tar.gz: 07a96080f455778fa16826d7ed09de93d4e331c90699d34201de8dba6794164245013c20a9c1514e813196cc5a854e7382cdf95055fef519a62df1c12975eb1c
@@ -9,9 +9,23 @@ module Dynamord
9
9
  module ClassMethods
10
10
  ##################################################################################
11
11
  # Connection methods from dynamoid to active_record
12
+ def configure_dependent(name, dep)
13
+ if dep
14
+ case dep
15
+ when :destroy, :delete_all
16
+ after_destroy { |record| record.send(name.to_sym).destroy_all ? true : false }
17
+ when :nullify
18
+ after_destroy { |record| record.send(name.to_sym).update_attributes("#{name}".to_sym => nil) ? true : false}
19
+ when :restrict_with_exception, :restrict_with_error
20
+ before_destroy { |record| raise Dynamoid::Errors::RecordNotDestroyed.new(record); false }
21
+ end
22
+ end
23
+ end
12
24
  def to_active_record_belongs_to(name, options = {})
13
25
  field "#{name}_id".to_sym, :integer
14
- validates "#{name}_id".to_sym, presence: true
26
+ if options[:optional]
27
+ validates "#{name}_id".to_sym, presence: true
28
+ end
15
29
  object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
16
30
  self.instance_eval do
17
31
  define_method(name) do |reload = false|
@@ -28,7 +42,7 @@ module Dynamord
28
42
  define_method("#{name}=") do |new_instance|
29
43
  self.send("#{name}_id=", new_instance.id)
30
44
  self.instance_variable_set("@#{name}", nil)
31
- self.save
45
+ # self.save
32
46
  end
33
47
  end
34
48
  end
@@ -37,17 +51,7 @@ module Dynamord
37
51
  plural_name = name.to_s.pluralize
38
52
  foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
39
53
  object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize
40
- if options[:dependent]
41
- case options[:dependent]
42
- when :destroy
43
- after_destroy { |record| record.send(name).delete_all }
44
- when :delete_all
45
- when :nullify
46
- when :restrict_with_exception
47
- when :restrict_with_error
48
- end
49
- end
50
- after_destroy { |record| record.send(name).delete }
54
+ configure_dependent(name, options[:dependent])
51
55
  self.instance_eval do
52
56
  define_method(plural_name) do |reload = false|
53
57
  if reload
@@ -66,6 +70,7 @@ module Dynamord
66
70
  def to_active_record_has_one(name, options = {})
67
71
  foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
68
72
  object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
73
+ configure_dependent(name, options[:dependent])
69
74
  self.instance_eval do
70
75
  define_method(name) do |reload = false|
71
76
  if reload
@@ -86,6 +91,9 @@ module Dynamord
86
91
  # Connection methods from active_record to dynamoid
87
92
  def from_active_record_belongs_to(name, options = {})
88
93
  object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
94
+ if options[:optional]
95
+ validates "#{name}_id".to_sym, presence: true
96
+ end
89
97
  self.instance_eval do
90
98
  define_method(name) do |reload = false|
91
99
  if reload
@@ -101,15 +109,37 @@ module Dynamord
101
109
  define_method("#{name}=") do |new_instance|
102
110
  self.send("#{name}_id=", new_instance.id)
103
111
  self.instance_variable_set("@#{name}", nil)
104
- self.save
112
+ # self.save
105
113
  end
106
114
  end
107
115
  end
108
-
116
+ def dynamoid_has_many(name, options = {})
117
+ configure_dependent(name, options[:dependent])
118
+ self.has_many name, options
119
+ end
120
+ # def dynamoid_has_one_belongs_to(name, options = {})
121
+ # before_create do |record|
122
+ # object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
123
+ # begin
124
+ # if object_class.where(:id => record.send("#{name}_ids").first).count < 1
125
+ # true
126
+ # end
127
+ # rescue
128
+ # true
129
+ # end
130
+ # false
131
+ # end
132
+ # self.belongs_to name, options
133
+ # end
134
+ def dynamoid_has_one(name, options = {})
135
+ configure_dependent(name, options[:dependent])
136
+ self.has_many name, options
137
+ end
109
138
  def from_active_record_has_many(name, options = {})
110
139
  plural_name = name.to_s.pluralize
111
140
  foreign_key = options[:foreign_key] || "#{self.name.underscore}_id".to_sym
112
141
  object_class = options[:class] || name.to_s.singularize.titleize.delete(' ').constantize
142
+ configure_dependent(name, options[:dependent])
113
143
  self.instance_eval do
114
144
  define_method(plural_name) do |reload = false|
115
145
  if reload
@@ -128,6 +158,7 @@ module Dynamord
128
158
  def from_active_record_has_one(name, options = {})
129
159
  foreign_key = options[:foreign_key] || "#{self.name.underscore}_id"
130
160
  object_class = options[:class] || name.to_s.titleize.delete(' ').constantize
161
+ configure_dependent(name, options[:dependent])
131
162
  self.instance_eval do
132
163
  define_method(name) do |reload = false|
133
164
  if reload
@@ -1,3 +1,3 @@
1
1
  module Dynamord
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - vibhanshu