sequent 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecf3a14a1b1acf03a8269e158bad28a533c54095
4
- data.tar.gz: af4beb48c4dc6323e2baaf5f0047a41fed3fff6e
3
+ metadata.gz: d2fce46d6a1e3cf678095978eef7e50640510f4d
4
+ data.tar.gz: 1da9ad9573f554a2fde4ccb45847a2c6102316fc
5
5
  SHA512:
6
- metadata.gz: 8d4478a2872b35922943920af4d572933f6cef35ae7c8b872326237687cfd9b4b2dc0ef44c7731ef3ae5dfc245fd5533b512b7e0be11d0bf1ee235e799afc89d
7
- data.tar.gz: 20bc101b0fa43c2e04635e390d7529a2b2c1d86c33d45283410c3066a0a645f24dd1eeff1ca937c663ddb39b277d49ca37a3f83e6ce173f74d267571344c6589
6
+ metadata.gz: 238fb123246feaaf104bd9e8cfee06241378c6d274a4c90cb88e761c3b6728277e5faef94f555c88cf5ef3c7b7abe8d86034d651a36d91d37eaa65bfaba65e3b
7
+ data.tar.gz: 5e3ac92286b6178c2147c301c3edc7db5a499f60e734886b2d9e39764a5a79cc7778205b5519a670e039a2fb9c2abbbe0ab739954c0e00c4786c11b5bdd91c3a
@@ -30,7 +30,13 @@ module Sequent
30
30
  if type.respond_to? :from_params
31
31
  value = type.from_params(value)
32
32
  elsif type.is_a? Sequent::Core::Helpers::ArrayWithType
33
- value = value.map { |v| type.item_type.from_params(v) }
33
+ value = value.map do |v|
34
+ if type.item_type.respond_to?(:from_params)
35
+ type.item_type.from_params(v)
36
+ else
37
+ v
38
+ end
39
+ end
34
40
  end
35
41
  instance_variable_set(:"@#{attribute}", value)
36
42
  end
@@ -45,36 +51,54 @@ module Sequent
45
51
  self.class.types.each do |field|
46
52
  value = self.instance_variable_get("@#{field[0]}")
47
53
  next if field[0] == "errors"
48
- if value.respond_to?(:as_params) && value.kind_of?(ValueObject)
49
- value = value.as_params
50
- elsif value.kind_of?(Array)
51
- value = value.map { |val| val.kind_of?(ValueObject) ? val.as_params : val }
52
- elsif value.is_a? DateTime
53
- value = value.iso8601
54
- elsif value.is_a? Date
55
- value = value.strftime("%d-%m-%Y") # TODO Remove to TypeConverter
56
- end
57
- hash[field[0]] = value
54
+ hash[field[0]] = if value.kind_of?(Array)
55
+ next if value.blank?
56
+ value.map{|v|value_to_string(v)}
57
+ else
58
+ value_to_string(value)
59
+ end
58
60
  end
59
61
  hash
60
62
  end
61
63
 
62
64
  private
63
- def make_params(root, hash)
64
- result={}
65
+
66
+ def value_to_string(val)
67
+ if val.is_a?(Sequent::Core::ValueObject)
68
+ val.as_params
69
+ elsif val.is_a? DateTime
70
+ val.iso8601
71
+ elsif val.is_a? Date
72
+ val.strftime("%d-%m-%Y")
73
+ else
74
+ val
75
+ end
76
+ end
77
+
78
+ def make_params(root, hash, memo = {})
65
79
  hash.each do |k, v|
66
80
  key = "#{root}[#{k}]"
67
81
  if v.is_a? Hash
68
- make_params(key, v).each do |k, v|
69
- result[k] = v.nil? ? "" : v.to_s
70
- end
71
- elsif v.is_a? Array
72
- result[key] = v
82
+ make_params(key, v, memo)
83
+ elsif v.is_a?(Array) && v.first.is_a?(Hash)
84
+ key = "#{key}[]"
85
+ v.each { |value| make_params(key, value, memo) }
86
+ elsif v.is_a?(Array)
87
+ memo["#{key}[]"] = v
73
88
  else
74
- result[key] = v.nil? ? "" : v.to_s
89
+ string_value = v.nil? ? "" : v.to_s
90
+ if memo.has_key?(key)
91
+ if memo[:key].is_a? Array
92
+ memo[key] << string_value
93
+ else
94
+ memo[key] = [memo[key], string_value]
95
+ end
96
+ else
97
+ memo[key] = string_value
98
+ end
75
99
  end
76
100
  end
77
- result
101
+ memo
78
102
  end
79
103
  end
80
104
  end
@@ -75,6 +75,7 @@ module Sequent
75
75
 
76
76
  def create_record(record_class, values)
77
77
  column_names = record_class.column_names
78
+ values = record_class.column_defaults.merge(values)
78
79
  values.merge!(updated_at: values[:created_at]) if column_names.include?("updated_at")
79
80
  struct_class_name = "#{record_class.to_s}Struct"
80
81
  if self.class.struct_cache.has_key?(struct_class_name)
@@ -0,0 +1,40 @@
1
+ module Sequent
2
+ module Test
3
+ module DateTimePatches
4
+ module Normalize
5
+ def normalize
6
+ in_time_zone("UTC")
7
+ end
8
+ end
9
+
10
+ module Compare
11
+ alias_method :'___<=>', :<=>
12
+
13
+ # omit nsec in datetime comparisons
14
+ def <=>(other)
15
+ if other && other.is_a?(DateTimePatches::Normalize)
16
+ result = normalize.iso8601 <=> other.normalize.iso8601
17
+ return result unless result == 0
18
+ # use usec here, which *truncates* the nsec (ie. like Postgres)
19
+ return normalize.usec <=> other.normalize.usec
20
+ end
21
+ public_send(:'___<=>', other)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ class Time
29
+ prepend Sequent::Test::DateTimePatches::Normalize
30
+ prepend Sequent::Test::DateTimePatches::Compare
31
+ end
32
+
33
+ class DateTime
34
+ prepend Sequent::Test::DateTimePatches::Normalize
35
+ prepend Sequent::Test::DateTimePatches::Compare
36
+ end
37
+
38
+ class ActiveSupport::TimeWithZone
39
+ prepend Sequent::Test::DateTimePatches::Normalize
40
+ end
@@ -1,3 +1,3 @@
1
1
  module Sequent
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Vonk
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-08-14 00:00:00.000000000 Z
13
+ date: 2015-09-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -213,6 +213,7 @@ files:
213
213
  - lib/sequent/test/command_handler_helpers.rb
214
214
  - lib/sequent/test/event_handler_helpers.rb
215
215
  - lib/sequent/test/event_stream_helpers.rb
216
+ - lib/sequent/test/time_comparison.rb
216
217
  - lib/version.rb
217
218
  homepage: https://github.com/zilverline/sequent
218
219
  licenses: