pg_serializable 1.0.1 → 1.1.0

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: 4ad9aa2e86537b9e90363067625b34571a0ddb0f
4
- data.tar.gz: 45100cfb29c1b503e401d5d56ef17a9bb39c10b0
3
+ metadata.gz: 52b59e980da06293df94c9f2b794587960a3a1bf
4
+ data.tar.gz: c8b3189b569853a8f0adc30b8f4b1037f0016361
5
5
  SHA512:
6
- metadata.gz: cecc2cd7e183a54ad507420bfbc9806a12fafe325276d1bcb3b0696ad436c1f70405428bb988538aa01c9f148fc8ee7782947fe1fb90258d56145b9d43916052
7
- data.tar.gz: 8c9ad3b2547e69f8548f9faa1807ea00bebcb1a5b981903fbf263c05661ca2718fd9a0d6997687afa169fb62e827d89aee9951b63f4b0c815d26278bc62b5b1d
6
+ metadata.gz: 5dff0d8070efa302ed38f03c081851dcfbb9c0a933e525870d87a75eccd4ec6861676ee9a8771c062df6b11b62ac57eb7d536318a1ea4020511f22501e730de0
7
+ data.tar.gz: 7d0e69567b8be5aa95038456598f9669cef49410d4acc8bb5cd969768f1e6c856dcc61f43f2940e12f2d3b57b0d3432295a62a827e3fd50f47f6fe1f1a00a2e5
@@ -9,6 +9,10 @@ module PgSerializable
9
9
  @label = label || column_name
10
10
  @prc = prc if block_given?
11
11
  end
12
+
13
+ def enum?
14
+ @enum ||= klass.defined_enums.has_key? column_name.to_s
15
+ end
12
16
  end
13
17
  end
14
18
  end
@@ -1,3 +1,3 @@
1
1
  module PgSerializable
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -42,12 +42,23 @@ module PgSerializable
42
42
  end
43
43
 
44
44
  def visit_attribute(subject, table_alias: nil)
45
+ return visit_enum(subject, table_alias: table_alias) if subject.enum?
45
46
  table_alias ||= alias_tracker
46
47
  key = "\'#{subject.label}\'"
47
48
  val = "\"#{table_alias}\".\"#{subject.prc ? subject.prc.call(column_name) : subject.column_name}\""
48
49
  "#{key}, #{val}"
49
50
  end
50
51
 
52
+ def visit_enum(subject, table_alias: nil)
53
+ key = "\'#{subject.label}\'"
54
+ enum_hash = subject.klass.defined_enums[subject.column_name.to_s]
55
+ val = "CASE \"#{table_alias}\".\"#{subject.column_name}\" " +
56
+ enum_hash.map do |val, int|
57
+ "WHEN #{int} THEN \'#{subject.prc ? subject.prc.call(val) : val}\'"
58
+ end.join(' ') + " ELSE NULL END"
59
+ "#{key}, #{val}"
60
+ end
61
+
51
62
  def visit_association(subject, **kwargs)
52
63
  send("visit_#{subject.type}", subject, **kwargs)
53
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_serializable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - matthewjf
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-14 00:00:00.000000000 Z
11
+ date: 2018-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler