dm-pg-json 0.2.0 → 0.2.1

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: fc0d2b6f83ab1aae625a0f205ffddcefd5e57361
4
- data.tar.gz: 44ab33d2962fa168b739d6d3d48f355f994d15fa
3
+ metadata.gz: 6a0f66fbe7d16dc57693879322dc2e3edb3ac580
4
+ data.tar.gz: 1402a8e3d30f47cc206dd07211c814e79c365360
5
5
  SHA512:
6
- metadata.gz: 28d42c87a26e6a2ee2c21f4c441ddc91092aa682ac4c4c4ab3286e56474113952c5c44bce7d0a2e611dbdcc438e6f5196e96340900b261fceb61c2f38fbfa31d
7
- data.tar.gz: 1dfeb689bf0ae27c2e8378d9189c2474c2c9325bd533dbaf1b0eba4175ac5a8c12171f5771bb8fad01c087b79d97d2a2e02644f1cc5d63e4f1dd252699c93570
6
+ metadata.gz: e6c598c82484f2f0a83e1d3639d3fca6b5ac6ab9941b18ac15acb5d74ae2c3758154410929bf6c40b901cc80aadfe0980de153e342c605a31fb568c97ae01b0e
7
+ data.tar.gz: da3be02da1aa874a2b4ef3614f9a0239577db2e1c5044b2969cf71333a6bcf5e8a931bde072e63bc5bfa6de21f65345a85aa69099d64d358754b51e63521299d
@@ -20,6 +20,8 @@ Gem::Specification.new do |gem|
20
20
 
21
21
  gem.add_dependency 'dm-core'
22
22
  gem.add_dependency 'dm-postgres-adapter'
23
+ gem.add_dependency 'dm-migrations'
24
+ gem.add_dependency 'dm-validations'
23
25
 
24
26
  gem.add_development_dependency "bundler", "~> 1.3"
25
27
  gem.add_development_dependency "rake"
@@ -2,35 +2,55 @@
2
2
 
3
3
  require 'dm-core'
4
4
  require 'dm-postgres-adapter'
5
+ require 'dm-migrations'
6
+ require 'dm-validations'
5
7
  require 'dm-pg-json/property/pgjson'
6
8
  require 'dm-pg-json/version'
7
9
 
8
10
  module DataMapper
9
11
  module Migrations
10
12
  module PostgresAdapter
11
- def property_schema_hash(property)
12
- schema = super
13
-
14
- if property.kind_of?(Property::PgJSON)
15
- schema.delete(:length)
16
- end
13
+ module SQL
14
+ def property_schema_statement(connection, schema)
15
+ statement = quote_name(schema[:name])
16
+ statement << " #{schema[:primitive]}"
17
+
18
+ length = schema[:length]
19
+
20
+ if schema[:precision] && schema[:scale]
21
+ statement << "(#{[ :precision, :scale ].map { |key| connection.quote_value(schema[key]) }.join(', ')})"
22
+ elsif length == 'max'
23
+ statement << '(max)'
24
+ elsif length
25
+ statement << "(#{connection.quote_value(length)})"
26
+ end
27
+
28
+ default = schema[:default]
29
+ if default
30
+ if schema[:primitive] == 'JSON'
31
+ stmt = " DEFAULT #{connection.quote_value(default)}::JSON"
32
+ else
33
+ stmt = " DEFAULT #{connection.quote_value(default)}"
34
+ end
35
+ statement << stmt
36
+ end
17
37
 
18
- schema
38
+ statement << ' NOT NULL' unless schema[:allow_nil]
39
+
40
+ statement
41
+ end
19
42
  end
20
43
  end
21
44
  end
45
+ end
22
46
 
47
+ module DataMapper
23
48
  module PostgresJSON
24
49
  def self.included(base)
25
50
  base.extend ClassMethods
26
51
  end
27
52
 
28
53
  module ClassMethods
29
- # Types for PostgreSQL databases.
30
- #
31
- # @return [Hash] types for PostgreSQL databases.
32
- #
33
- # @api private
34
54
  def type_map
35
55
  super.merge(Property::PgJSON => {:primitive => 'JSON'}).freeze
36
56
  end
@@ -5,7 +5,8 @@ require 'dm-types/support/dirty_minder'
5
5
 
6
6
  module DataMapper
7
7
  class Property
8
- class PgJSON < Object
8
+ class PgJSON
9
+ include ::DataMapper::Property::DirtyMinder
9
10
  def dump(value)
10
11
  case value
11
12
  when ::NilClass, ::String
@@ -24,12 +25,13 @@ module DataMapper
24
25
  when ::String
25
26
  Oj.load(value)
26
27
  else
27
- {}
28
+ nil
28
29
  end
29
30
  end
30
31
 
31
32
  def primitive?(value)
32
- value.kind_of?(::String)
33
+ value = load(value) if value.kind_of?(::String)
34
+ value.kind_of?(::Array) || value.kind_of?(::Hash)
33
35
  end
34
36
  end
35
37
  end
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
2
  module PostgresJSON
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,69 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-pg-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - StyleSeek Engineering Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dm-core
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dm-postgres-adapter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dm-migrations
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dm-validations
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
39
67
  - !ruby/object:Gem::Version
40
68
  version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - ~>
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
75
  version: '1.3'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ~>
80
+ - - "~>"
53
81
  - !ruby/object:Gem::Version
54
82
  version: '1.3'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - '>='
87
+ - - ">="
60
88
  - !ruby/object:Gem::Version
61
89
  version: '0'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - '>='
94
+ - - ">="
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  description: Adds support for the JSON datatype (available in PostgreSQL 9.3+) to
@@ -74,7 +102,7 @@ executables: []
74
102
  extensions: []
75
103
  extra_rdoc_files: []
76
104
  files:
77
- - .gitignore
105
+ - ".gitignore"
78
106
  - Gemfile
79
107
  - LICENSE.txt
80
108
  - README.md
@@ -93,17 +121,17 @@ require_paths:
93
121
  - lib
94
122
  required_ruby_version: !ruby/object:Gem::Requirement
95
123
  requirements:
96
- - - '>='
124
+ - - ">="
97
125
  - !ruby/object:Gem::Version
98
126
  version: '0'
99
127
  required_rubygems_version: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - '>='
129
+ - - ">="
102
130
  - !ruby/object:Gem::Version
103
131
  version: '0'
104
132
  requirements: []
105
133
  rubyforge_project:
106
- rubygems_version: 2.0.14
134
+ rubygems_version: 2.2.2
107
135
  signing_key:
108
136
  specification_version: 4
109
137
  summary: Adds support for the JSON datatype to DataMapper