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 +4 -4
- data/dm-pg-json.gemspec +2 -0
- data/lib/dm-pg-json.rb +32 -12
- data/lib/dm-pg-json/property/pgjson.rb +5 -3
- data/lib/dm-pg-json/version.rb +1 -1
- metadata +42 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a0f66fbe7d16dc57693879322dc2e3edb3ac580
|
4
|
+
data.tar.gz: 1402a8e3d30f47cc206dd07211c814e79c365360
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6c598c82484f2f0a83e1d3639d3fca6b5ac6ab9941b18ac15acb5d74ae2c3758154410929bf6c40b901cc80aadfe0980de153e342c605a31fb568c97ae01b0e
|
7
|
+
data.tar.gz: da3be02da1aa874a2b4ef3614f9a0239577db2e1c5044b2969cf71333a6bcf5e8a931bde072e63bc5bfa6de21f65345a85aa69099d64d358754b51e63521299d
|
data/dm-pg-json.gemspec
CHANGED
@@ -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"
|
data/lib/dm-pg-json.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
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
|
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
|
data/lib/dm-pg-json/version.rb
CHANGED
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.
|
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:
|
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.
|
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
|