rom-sql 2.0.0.beta2 → 2.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -0
  3. data/lib/rom/plugins/relation/sql/postgres/explain.rb +54 -0
  4. data/lib/rom/sql.rb +1 -1
  5. data/lib/rom/sql/attribute.rb +17 -18
  6. data/lib/rom/sql/errors.rb +3 -0
  7. data/lib/rom/sql/extensions/mysql.rb +1 -1
  8. data/lib/rom/sql/extensions/mysql/type_builder.rb +28 -0
  9. data/lib/rom/sql/extensions/postgres.rb +3 -1
  10. data/lib/rom/sql/extensions/postgres/commands.rb +30 -13
  11. data/lib/rom/sql/extensions/postgres/{attributes_inferrer.rb → type_builder.rb} +24 -28
  12. data/lib/rom/sql/extensions/postgres/type_serializer.rb +39 -0
  13. data/lib/rom/sql/extensions/postgres/types.rb +24 -477
  14. data/lib/rom/sql/extensions/postgres/types/array.rb +163 -0
  15. data/lib/rom/sql/extensions/postgres/types/geometric.rb +135 -0
  16. data/lib/rom/sql/extensions/postgres/types/json.rb +235 -0
  17. data/lib/rom/sql/extensions/postgres/types/network.rb +15 -0
  18. data/lib/rom/sql/extensions/sqlite.rb +1 -1
  19. data/lib/rom/sql/extensions/sqlite/{attributes_inferrer.rb → type_builder.rb} +5 -5
  20. data/lib/rom/sql/extensions/sqlite/types.rb +8 -3
  21. data/lib/rom/sql/foreign_key.rb +17 -0
  22. data/lib/rom/sql/function.rb +86 -8
  23. data/lib/rom/sql/gateway.rb +26 -26
  24. data/lib/rom/sql/index.rb +4 -0
  25. data/lib/rom/sql/migration.rb +3 -3
  26. data/lib/rom/sql/migration/inline_runner.rb +9 -83
  27. data/lib/rom/sql/migration/migrator.rb +35 -12
  28. data/lib/rom/sql/migration/recorder.rb +21 -0
  29. data/lib/rom/sql/migration/runner.rb +115 -0
  30. data/lib/rom/sql/migration/schema_diff.rb +108 -53
  31. data/lib/rom/sql/migration/writer.rb +61 -0
  32. data/lib/rom/sql/relation.rb +2 -1
  33. data/lib/rom/sql/relation/reading.rb +63 -3
  34. data/lib/rom/sql/relation/writing.rb +38 -0
  35. data/lib/rom/sql/schema.rb +9 -3
  36. data/lib/rom/sql/schema/attributes_inferrer.rb +3 -119
  37. data/lib/rom/sql/schema/inferrer.rb +99 -18
  38. data/lib/rom/sql/schema/type_builder.rb +94 -0
  39. data/lib/rom/sql/type_dsl.rb +30 -0
  40. data/lib/rom/sql/type_extensions.rb +11 -6
  41. data/lib/rom/sql/type_serializer.rb +46 -0
  42. data/lib/rom/sql/types.rb +12 -0
  43. data/lib/rom/sql/version.rb +1 -1
  44. metadata +26 -244
  45. data/.codeclimate.yml +0 -15
  46. data/.gitignore +0 -17
  47. data/.rspec +0 -3
  48. data/.travis.yml +0 -39
  49. data/.yardopts +0 -2
  50. data/Gemfile +0 -33
  51. data/Guardfile +0 -24
  52. data/LICENSE.txt +0 -22
  53. data/Rakefile +0 -19
  54. data/circle.yml +0 -10
  55. data/lib/rom/sql/extensions/mysql/attributes_inferrer.rb +0 -10
  56. data/lib/rom/sql/relation/sequel_api.rb +0 -133
  57. data/log/.gitkeep +0 -0
  58. data/rom-sql.gemspec +0 -29
  59. data/spec/extensions/postgres/attribute_spec.rb +0 -217
  60. data/spec/extensions/postgres/integration_spec.rb +0 -59
  61. data/spec/extensions/postgres/types_spec.rb +0 -252
  62. data/spec/extensions/sqlite/types_spec.rb +0 -11
  63. data/spec/fixtures/migrations/20150403090603_create_carrots.rb +0 -8
  64. data/spec/integration/associations/many_to_many/custom_fks_spec.rb +0 -76
  65. data/spec/integration/associations/many_to_many/from_view_spec.rb +0 -88
  66. data/spec/integration/associations/many_to_many_spec.rb +0 -162
  67. data/spec/integration/associations/many_to_one/custom_fks_spec.rb +0 -64
  68. data/spec/integration/associations/many_to_one/from_view_spec.rb +0 -84
  69. data/spec/integration/associations/many_to_one/self_ref_spec.rb +0 -53
  70. data/spec/integration/associations/many_to_one_spec.rb +0 -117
  71. data/spec/integration/associations/one_to_many/custom_fks_spec.rb +0 -54
  72. data/spec/integration/associations/one_to_many/from_view_spec.rb +0 -57
  73. data/spec/integration/associations/one_to_many/self_ref_spec.rb +0 -54
  74. data/spec/integration/associations/one_to_many_spec.rb +0 -86
  75. data/spec/integration/associations/one_to_one_spec.rb +0 -69
  76. data/spec/integration/associations/one_to_one_through_spec.rb +0 -92
  77. data/spec/integration/auto_migrations/errors_spec.rb +0 -31
  78. data/spec/integration/auto_migrations/indexes_spec.rb +0 -253
  79. data/spec/integration/auto_migrations/managing_columns_spec.rb +0 -156
  80. data/spec/integration/auto_migrations/postgres/column_types_spec.rb +0 -63
  81. data/spec/integration/combine_with_spec.rb +0 -43
  82. data/spec/integration/commands/create_spec.rb +0 -304
  83. data/spec/integration/commands/delete_spec.rb +0 -84
  84. data/spec/integration/commands/update_spec.rb +0 -90
  85. data/spec/integration/commands/upsert_spec.rb +0 -83
  86. data/spec/integration/gateway_spec.rb +0 -107
  87. data/spec/integration/migration_spec.rb +0 -55
  88. data/spec/integration/plugins/associates/many_to_many_spec.rb +0 -69
  89. data/spec/integration/plugins/associates_spec.rb +0 -250
  90. data/spec/integration/plugins/auto_restrictions_spec.rb +0 -74
  91. data/spec/integration/relation_schema_spec.rb +0 -271
  92. data/spec/integration/schema/call_spec.rb +0 -24
  93. data/spec/integration/schema/inferrer/mysql_spec.rb +0 -45
  94. data/spec/integration/schema/inferrer/postgres_spec.rb +0 -203
  95. data/spec/integration/schema/inferrer/sqlite_spec.rb +0 -37
  96. data/spec/integration/schema/inferrer_spec.rb +0 -390
  97. data/spec/integration/schema/prefix_spec.rb +0 -16
  98. data/spec/integration/schema/qualified_spec.rb +0 -16
  99. data/spec/integration/schema/rename_spec.rb +0 -21
  100. data/spec/integration/schema/view_spec.rb +0 -29
  101. data/spec/integration/sequel_api_spec.rb +0 -36
  102. data/spec/integration/setup_spec.rb +0 -26
  103. data/spec/integration/support/active_support_notifications_spec.rb +0 -24
  104. data/spec/integration/support/rails_log_subscriber_spec.rb +0 -30
  105. data/spec/integration/wrap_spec.rb +0 -91
  106. data/spec/shared/accounts.rb +0 -48
  107. data/spec/shared/database_setup.rb +0 -70
  108. data/spec/shared/notes.rb +0 -23
  109. data/spec/shared/posts.rb +0 -34
  110. data/spec/shared/puppies.rb +0 -15
  111. data/spec/shared/relations.rb +0 -8
  112. data/spec/shared/users.rb +0 -32
  113. data/spec/shared/users_and_tasks.rb +0 -50
  114. data/spec/spec_helper.rb +0 -122
  115. data/spec/support/env_helper.rb +0 -25
  116. data/spec/support/helpers.rb +0 -24
  117. data/spec/support/oracle/create_users.sql +0 -7
  118. data/spec/support/oracle/set_sys_passwords.sql +0 -2
  119. data/spec/support/test_configuration.rb +0 -16
  120. data/spec/unit/attribute_spec.rb +0 -104
  121. data/spec/unit/function_spec.rb +0 -48
  122. data/spec/unit/gateway_spec.rb +0 -70
  123. data/spec/unit/logger_spec.rb +0 -14
  124. data/spec/unit/migration_tasks_spec.rb +0 -111
  125. data/spec/unit/migrator_spec.rb +0 -25
  126. data/spec/unit/order_dsl_spec.rb +0 -43
  127. data/spec/unit/plugin/associates_spec.rb +0 -94
  128. data/spec/unit/plugin/pagination_spec.rb +0 -91
  129. data/spec/unit/plugin/timestamp_spec.rb +0 -117
  130. data/spec/unit/projection_dsl_spec.rb +0 -110
  131. data/spec/unit/relation/assoc_spec.rb +0 -87
  132. data/spec/unit/relation/associations_spec.rb +0 -27
  133. data/spec/unit/relation/avg_spec.rb +0 -11
  134. data/spec/unit/relation/by_pk_spec.rb +0 -62
  135. data/spec/unit/relation/dataset_spec.rb +0 -50
  136. data/spec/unit/relation/distinct_spec.rb +0 -15
  137. data/spec/unit/relation/exclude_spec.rb +0 -11
  138. data/spec/unit/relation/exist_predicate_spec.rb +0 -25
  139. data/spec/unit/relation/exists_spec.rb +0 -18
  140. data/spec/unit/relation/fetch_spec.rb +0 -21
  141. data/spec/unit/relation/group_spec.rb +0 -61
  142. data/spec/unit/relation/having_spec.rb +0 -22
  143. data/spec/unit/relation/inner_join_spec.rb +0 -158
  144. data/spec/unit/relation/inspect_spec.rb +0 -11
  145. data/spec/unit/relation/instrument_spec.rb +0 -45
  146. data/spec/unit/relation/invert_spec.rb +0 -11
  147. data/spec/unit/relation/left_join_spec.rb +0 -55
  148. data/spec/unit/relation/lock_spec.rb +0 -93
  149. data/spec/unit/relation/map_spec.rb +0 -16
  150. data/spec/unit/relation/max_spec.rb +0 -11
  151. data/spec/unit/relation/min_spec.rb +0 -11
  152. data/spec/unit/relation/order_spec.rb +0 -51
  153. data/spec/unit/relation/pluck_spec.rb +0 -11
  154. data/spec/unit/relation/prefix_spec.rb +0 -29
  155. data/spec/unit/relation/primary_key_spec.rb +0 -27
  156. data/spec/unit/relation/project_spec.rb +0 -24
  157. data/spec/unit/relation/qualified_columns_spec.rb +0 -30
  158. data/spec/unit/relation/qualified_spec.rb +0 -25
  159. data/spec/unit/relation/read_spec.rb +0 -25
  160. data/spec/unit/relation/rename_spec.rb +0 -23
  161. data/spec/unit/relation/right_join_spec.rb +0 -57
  162. data/spec/unit/relation/select_append_spec.rb +0 -21
  163. data/spec/unit/relation/select_spec.rb +0 -40
  164. data/spec/unit/relation/sum_spec.rb +0 -11
  165. data/spec/unit/relation/union_spec.rb +0 -19
  166. data/spec/unit/relation/unique_predicate_spec.rb +0 -18
  167. data/spec/unit/relation/where_spec.rb +0 -133
  168. data/spec/unit/restriction_dsl_spec.rb +0 -34
  169. data/spec/unit/schema_spec.rb +0 -25
  170. data/spec/unit/types_spec.rb +0 -65
@@ -1,253 +0,0 @@
1
- RSpec.describe ROM::SQL::Gateway, :postgres, :helpers do
2
- include_context 'database setup'
3
-
4
- before do
5
- conn.drop_table?(:users)
6
- end
7
-
8
- let(:table_name) { :users }
9
- let(:relation_name) { ROM::Relation::Name.new(table_name) }
10
-
11
- subject(:gateway) { container.gateways[:default] }
12
-
13
- let(:inferrer) { ROM::SQL::Schema::Inferrer.new }
14
-
15
- let(:migrated_schema) do
16
- empty = define_schema(table_name)
17
- empty.with(inferrer.(empty, gateway))
18
- end
19
-
20
- let(:attributes) { migrated_schema.to_a }
21
-
22
- def indexdef(index)
23
- gateway.connection[<<-SQL, index].first[:indexdef]
24
- select indexdef
25
- from pg_indexes
26
- where indexname = ?
27
- SQL
28
- end
29
-
30
- describe 'create table' do
31
- describe 'one-column indexes' do
32
- before do
33
- conf.relation(:users) do
34
- schema do
35
- attribute :id, ROM::SQL::Types::Serial
36
- attribute :name, ROM::SQL::Types::String.meta(index: true)
37
-
38
- indexes do
39
- index :name, name: :unique_name, unique: true
40
- end
41
- end
42
- end
43
- end
44
-
45
- it 'creates ordinary b-tree indexes' do
46
- gateway.auto_migrate!(conf)
47
-
48
- expect(attributes.map(&:to_ast))
49
- .to eql([
50
- [:attribute,
51
- [:id,
52
- [:definition, [Integer, {}]],
53
- primary_key: true, source: :users]],
54
- [:attribute,
55
- [:name,
56
- [:definition, [String, {}]],
57
- source: :users]],
58
- ])
59
-
60
- expect(migrated_schema.indexes.first).
61
- to eql(ROM::SQL::Index.new(
62
- [define_attribute(:name, :String, source: relation_name)],
63
- name: :unique_name,
64
- unique: true
65
- ))
66
- end
67
- end
68
- end
69
-
70
- describe 'alter table' do
71
- describe 'one-column indexes' do
72
- context 'adding' do
73
- before do
74
- end
75
-
76
- it 'adds indexed column' do
77
- conn.create_table :users do
78
- primary_key :id
79
- end
80
-
81
- conf.relation(:users) do
82
- schema do
83
- attribute :id, ROM::SQL::Types::Serial
84
- attribute :name, ROM::SQL::Types::String.meta(index: true)
85
- end
86
- end
87
-
88
- gateway.auto_migrate!(conf)
89
-
90
- name_index = migrated_schema.indexes.first
91
-
92
- expect(migrated_schema.attributes[1].name).to eql(:name)
93
- expect(migrated_schema.indexes.size).to eql(1)
94
- expect(name_index.name).to eql(:users_name_index)
95
- expect(name_index.attributes.map(&:name)).to eql(%i(name))
96
- end
97
-
98
- it 'supports custom names' do
99
- conn.create_table :users do
100
- primary_key :id
101
- end
102
-
103
- conf.relation(:users) do
104
- schema do
105
- attribute :id, ROM::SQL::Types::Serial
106
- attribute :name, ROM::SQL::Types::String
107
-
108
- indexes do
109
- index :name, name: :custom_idx
110
- end
111
- end
112
- end
113
-
114
- gateway.auto_migrate!(conf)
115
-
116
- name_index = migrated_schema.indexes.first
117
-
118
- expect(migrated_schema.attributes[1].name).to eql(:name)
119
- expect(migrated_schema.indexes.size).to eql(1)
120
- expect(name_index.name).to eql(:custom_idx)
121
- expect(name_index.attributes.map(&:name)).to eql(%i(name))
122
- end
123
-
124
- it 'adds index to existing column' do
125
- conn.create_table :users do
126
- primary_key :id
127
- column :name, String
128
- end
129
-
130
- conf.relation(:users) do
131
- schema do
132
- attribute :id, ROM::SQL::Types::Serial
133
- attribute :name, ROM::SQL::Types::String
134
-
135
- indexes do
136
- index :name
137
- end
138
- end
139
- end
140
-
141
- gateway.auto_migrate!(conf)
142
-
143
- name_index = migrated_schema.indexes.first
144
-
145
- expect(name_index.name).to eql(:users_name_index)
146
- expect(name_index.attributes.map(&:name)).to eql(%i(name))
147
- expect(name_index).not_to be_unique
148
- end
149
-
150
- it 'supports unique indexes' do
151
- conn.create_table :users do
152
- primary_key :id
153
- column :name, String
154
- end
155
-
156
- conf.relation(:users) do
157
- schema do
158
- attribute :id, ROM::SQL::Types::Serial
159
- attribute :name, ROM::SQL::Types::String
160
-
161
- indexes do
162
- index :name, unique: true
163
- end
164
- end
165
- end
166
-
167
- gateway.auto_migrate!(conf)
168
-
169
- name_index = migrated_schema.indexes.first
170
-
171
- expect(name_index.name).to eql(:users_name_index)
172
- expect(name_index.attributes.map(&:name)).to eql(%i(name))
173
- expect(name_index).to be_unique
174
- end
175
-
176
- if metadata[:postgres]
177
- it 'uses index method' do
178
- conn.create_table :users do
179
- primary_key :id
180
- column :props, :jsonb, null: false
181
- end
182
-
183
- conf.relation(:users) do
184
- schema do
185
- attribute :id, ROM::SQL::Types::Serial
186
- attribute :props, ROM::SQL::Types::PG::JSONB
187
-
188
- indexes do
189
- index :props, type: :gin
190
- end
191
- end
192
- end
193
-
194
- gateway.auto_migrate!(conf)
195
-
196
- expect(indexdef('users_props_index')).
197
- to eql('CREATE INDEX users_props_index ON users USING gin (props)')
198
- end
199
-
200
- it 'supports partial indexes' do
201
- conn.create_table :users do
202
- primary_key :id
203
- column :name, String
204
- end
205
-
206
- conf.relation(:users) do
207
- schema do
208
- attribute :id, ROM::SQL::Types::Serial
209
- attribute :name, ROM::SQL::Types::String
210
-
211
- indexes do
212
- index :name, name: :long_names_only, predicate: 'length(name) > 10'
213
- end
214
- end
215
- end
216
-
217
- gateway.auto_migrate!(conf)
218
-
219
- expect(indexdef('long_names_only')).
220
- to eql('CREATE INDEX long_names_only ON users USING btree (name) WHERE (length(name) > 10)')
221
- end
222
- end
223
- end
224
-
225
- context 'removing' do
226
- before do
227
- conf.relation(:users) do
228
- schema do
229
- attribute :id, ROM::SQL::Types::Serial
230
- attribute :name, ROM::SQL::Types::String
231
- attribute :email, ROM::SQL::Types::String
232
- end
233
- end
234
-
235
- conn.create_table :users do
236
- primary_key :id
237
- column :name, String
238
- column :email, String
239
-
240
- index :name
241
- index :email, name: :email_idx
242
- end
243
- end
244
-
245
- it 'removes index' do
246
- gateway.auto_migrate!(conf)
247
-
248
- expect(migrated_schema.indexes).to be_empty
249
- end
250
- end
251
- end
252
- end
253
- end
@@ -1,156 +0,0 @@
1
- RSpec.describe ROM::SQL::Gateway, :postgres, :helpers do
2
- include_context 'database setup'
3
-
4
- before do
5
- conn.drop_table?(:users)
6
- end
7
-
8
- before do
9
- conf.relation(:users) do
10
- schema do
11
- attribute :id, ROM::SQL::Types::Serial
12
- attribute :name, ROM::SQL::Types::String
13
- attribute :email, ROM::SQL::Types::String.optional
14
- end
15
- end
16
- end
17
-
18
- let(:table_name) { :users }
19
-
20
- subject(:gateway) { container.gateways[:default] }
21
-
22
- let(:inferrer) { ROM::SQL::Schema::Inferrer.new }
23
-
24
- let(:migrated_schema) do
25
- empty = define_schema(table_name)
26
- empty.with(inferrer.(empty, gateway))
27
- end
28
-
29
- let(:attributes) { migrated_schema.to_a }
30
-
31
- describe 'create a table' do
32
- it 'creates a table from a relation' do
33
- gateway.auto_migrate!(conf)
34
-
35
- expect(attributes.map(&:to_ast))
36
- .to eql([
37
- [:attribute,
38
- [:id,
39
- [:definition, [Integer, {}]],
40
- primary_key: true, source: :users]],
41
- [:attribute, [:name, [:definition, [String, {}]], source: :users]],
42
- [:attribute,
43
- [:email,
44
- [:sum,
45
- [[:constrained,
46
- [[:definition, [NilClass, {}]],
47
- [:predicate, [:type?, [[:type, NilClass], [:input, ROM::Undefined]]]],
48
- {}]],
49
- [:definition, [String, {}]],
50
- {}]],
51
- source: :users]]
52
- ])
53
- end
54
- end
55
-
56
- describe 'adding columns' do
57
- before do
58
- conn.create_table :users do
59
- primary_key :id
60
- end
61
- end
62
-
63
- it 'adds columns to an existing table' do
64
- gateway.auto_migrate!(conf)
65
-
66
- expect(attributes[1].to_ast)
67
- .to eql(
68
- [:attribute, [:name, [:definition, [String, {}]], source: :users]]
69
- )
70
- expect(attributes[2].to_ast)
71
- .to eql(
72
- [:attribute,
73
- [:email,
74
- [:sum,
75
- [[:constrained,
76
- [[:definition, [NilClass, {}]],
77
- [:predicate, [:type?, [[:type, NilClass], [:input, ROM::Undefined]]]],
78
- {}]],
79
- [:definition, [String, {}]],
80
- {}]],
81
- source: :users]]
82
- )
83
- end
84
- end
85
-
86
- describe 'removing columns' do
87
- before do
88
- conn.create_table :users do
89
- primary_key :id
90
- column :name, String, null: false
91
- column :email, String
92
- column :age, Integer, null: false
93
- end
94
- end
95
-
96
- it 'removes columns from a table' do
97
- gateway.auto_migrate!(conf)
98
-
99
- expect(attributes.map(&:name)).to eql(%i(id name email))
100
- end
101
- end
102
-
103
- describe 'empty diff' do
104
- before do
105
- conn.create_table :users do
106
- primary_key :id
107
- column :name, String, null: false
108
- column :email, String
109
- end
110
- end
111
-
112
- it 'leaves existing schema' do
113
- current = container.relations[:users].schema
114
-
115
- gateway.auto_migrate!(conf)
116
-
117
- expect(attributes).to eql(current.to_a)
118
- end
119
- end
120
-
121
- describe 'changing NOTNULL' do
122
- describe 'adding' do
123
- before do
124
- conn.create_table :users do
125
- primary_key :id
126
- column :name, String
127
- column :email, String
128
- end
129
- end
130
-
131
- it 'adds the constraint' do
132
- gateway.auto_migrate!(conf)
133
-
134
- expect(attributes[1].name).to eql(:name)
135
- expect(attributes[1]).not_to be_optional
136
- end
137
- end
138
-
139
- describe 'removing' do
140
- before do
141
- conn.create_table :users do
142
- primary_key :id
143
- column :name, String, null: false
144
- column :email, String, null: false
145
- end
146
- end
147
-
148
- it 'removes the constraint' do
149
- gateway.auto_migrate!(conf)
150
-
151
- expect(attributes[2].name).to eql(:email)
152
- expect(attributes[2]).to be_optional
153
- end
154
- end
155
- end
156
- end
@@ -1,63 +0,0 @@
1
- RSpec.describe ROM::SQL::Gateway, :postgres, :helpers do
2
- include_context 'database setup'
3
-
4
- before do
5
- conn.drop_table?(:test_pg_types)
6
- end
7
-
8
- let(:table_name) { :test_pg_types }
9
-
10
- subject(:gateway) { container.gateways[:default] }
11
-
12
- let(:inferrer) { ROM::SQL::Schema::Inferrer.new }
13
-
14
- let(:migrated_schema) do
15
- empty = define_schema(table_name)
16
- empty.with(inferrer.(empty, gateway))
17
- end
18
-
19
- let(:attributes) { migrated_schema.to_a }
20
-
21
- describe 'common types' do
22
- before do
23
- conf.relation(:test_pg_types) do
24
- schema do
25
- attribute :id, ROM::SQL::Types::Serial
26
- attribute :string, ROM::SQL::Types::String
27
- attribute :int, ROM::SQL::Types::Int
28
- attribute :time, ROM::SQL::Types::Time
29
- attribute :date, ROM::SQL::Types::Date
30
- attribute :decimal, ROM::SQL::Types::Decimal
31
- attribute :string_nullable, ROM::SQL::Types::String.optional
32
- end
33
- end
34
- end
35
-
36
- it 'has support for PG data types' do
37
- gateway.auto_migrate!(conf)
38
-
39
- expect(attributes.map(&:to_ast))
40
- .to eql([
41
- [:attribute,
42
- [:id,
43
- [:definition, [Integer, {}]],
44
- primary_key: true, source: :test_pg_types]],
45
- [:attribute, [:string, [:definition, [String, {}]], source: :test_pg_types]],
46
- [:attribute, [:int, [:definition, [Integer, {}]], source: :test_pg_types]],
47
- [:attribute, [:time, [:definition, [Time, {}]], source: :test_pg_types]],
48
- [:attribute, [:date, [:definition, [Date, {}]], source: :test_pg_types]],
49
- [:attribute, [:decimal, [:definition, [BigDecimal, {}]], source: :test_pg_types]],
50
- [:attribute,
51
- [:string_nullable,
52
- [:sum,
53
- [[:constrained,
54
- [[:definition, [NilClass, {}]],
55
- [:predicate, [:type?, [[:type, NilClass], [:input, ROM::Undefined]]]],
56
- {}]],
57
- [:definition, [String, {}]],
58
- {}]],
59
- source: :test_pg_types]]
60
- ])
61
- end
62
- end
63
- end