torque-postgresql 3.4.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/torque/function_generator.rb +13 -0
  3. data/lib/generators/torque/templates/function.sql.erb +4 -0
  4. data/lib/generators/torque/templates/type.sql.erb +2 -0
  5. data/lib/generators/torque/templates/view.sql.erb +3 -0
  6. data/lib/generators/torque/type_generator.rb +13 -0
  7. data/lib/generators/torque/view_generator.rb +16 -0
  8. data/lib/torque/postgresql/adapter/database_statements.rb +111 -94
  9. data/lib/torque/postgresql/adapter/oid/array.rb +17 -0
  10. data/lib/torque/postgresql/adapter/oid/line.rb +2 -6
  11. data/lib/torque/postgresql/adapter/oid/range.rb +4 -4
  12. data/lib/torque/postgresql/adapter/oid.rb +1 -23
  13. data/lib/torque/postgresql/adapter/quoting.rb +13 -7
  14. data/lib/torque/postgresql/adapter/schema_creation.rb +7 -28
  15. data/lib/torque/postgresql/adapter/schema_definitions.rb +58 -0
  16. data/lib/torque/postgresql/adapter/schema_dumper.rb +136 -34
  17. data/lib/torque/postgresql/adapter/schema_overrides.rb +45 -0
  18. data/lib/torque/postgresql/adapter/schema_statements.rb +109 -49
  19. data/lib/torque/postgresql/arel/infix_operation.rb +15 -28
  20. data/lib/torque/postgresql/arel/nodes.rb +16 -2
  21. data/lib/torque/postgresql/arel/operations.rb +7 -1
  22. data/lib/torque/postgresql/arel/visitors.rb +7 -9
  23. data/lib/torque/postgresql/associations/association_scope.rb +23 -31
  24. data/lib/torque/postgresql/associations/belongs_to_many_association.rb +25 -0
  25. data/lib/torque/postgresql/associations/builder/belongs_to_many.rb +16 -0
  26. data/lib/torque/postgresql/attributes/builder/enum.rb +12 -9
  27. data/lib/torque/postgresql/attributes/builder/full_text_search.rb +109 -0
  28. data/lib/torque/postgresql/attributes/builder/period.rb +21 -21
  29. data/lib/torque/postgresql/attributes/builder.rb +49 -11
  30. data/lib/torque/postgresql/attributes/enum.rb +7 -7
  31. data/lib/torque/postgresql/attributes/enum_set.rb +7 -7
  32. data/lib/torque/postgresql/attributes/full_text_search.rb +19 -0
  33. data/lib/torque/postgresql/attributes/period.rb +2 -2
  34. data/lib/torque/postgresql/attributes.rb +0 -4
  35. data/lib/torque/postgresql/auxiliary_statement/recursive.rb +3 -3
  36. data/lib/torque/postgresql/base.rb +5 -11
  37. data/lib/torque/postgresql/collector.rb +1 -1
  38. data/lib/torque/postgresql/config.rb +129 -5
  39. data/lib/torque/postgresql/function.rb +94 -0
  40. data/lib/torque/postgresql/inheritance.rb +52 -36
  41. data/lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb +33 -0
  42. data/lib/torque/postgresql/predicate_builder/array_handler.rb +47 -0
  43. data/lib/torque/postgresql/predicate_builder/enumerator_lazy_handler.rb +37 -0
  44. data/lib/torque/postgresql/predicate_builder/regexp_handler.rb +21 -0
  45. data/lib/torque/postgresql/predicate_builder.rb +35 -0
  46. data/lib/torque/postgresql/railtie.rb +137 -30
  47. data/lib/torque/postgresql/reflection/abstract_reflection.rb +12 -44
  48. data/lib/torque/postgresql/reflection/belongs_to_many_reflection.rb +4 -0
  49. data/lib/torque/postgresql/reflection/has_many_reflection.rb +4 -0
  50. data/lib/torque/postgresql/reflection/runtime_reflection.rb +1 -1
  51. data/lib/torque/postgresql/relation/auxiliary_statement.rb +7 -2
  52. data/lib/torque/postgresql/relation/buckets.rb +124 -0
  53. data/lib/torque/postgresql/relation/distinct_on.rb +7 -2
  54. data/lib/torque/postgresql/relation/inheritance.rb +22 -15
  55. data/lib/torque/postgresql/relation/join_series.rb +112 -0
  56. data/lib/torque/postgresql/relation/merger.rb +17 -3
  57. data/lib/torque/postgresql/relation.rb +24 -38
  58. data/lib/torque/postgresql/schema_cache.rb +6 -12
  59. data/lib/torque/postgresql/version.rb +1 -1
  60. data/lib/torque/postgresql/versioned_commands/command_migration.rb +146 -0
  61. data/lib/torque/postgresql/versioned_commands/generator.rb +57 -0
  62. data/lib/torque/postgresql/versioned_commands/migration_context.rb +83 -0
  63. data/lib/torque/postgresql/versioned_commands/migrator.rb +39 -0
  64. data/lib/torque/postgresql/versioned_commands/schema_table.rb +101 -0
  65. data/lib/torque/postgresql/versioned_commands.rb +161 -0
  66. data/lib/torque/postgresql.rb +2 -1
  67. data/spec/fixtures/migrations/20250101000001_create_users.rb +0 -0
  68. data/spec/fixtures/migrations/20250101000002_create_function_count_users_v1.sql +0 -0
  69. data/spec/fixtures/migrations/20250101000003_create_internal_users.rb +0 -0
  70. data/spec/fixtures/migrations/20250101000004_update_function_count_users_v2.sql +0 -0
  71. data/spec/fixtures/migrations/20250101000005_create_view_all_users_v1.sql +0 -0
  72. data/spec/fixtures/migrations/20250101000006_create_type_user_id_v1.sql +0 -0
  73. data/spec/fixtures/migrations/20250101000007_remove_function_count_users_v2.sql +0 -0
  74. data/spec/initialize.rb +67 -0
  75. data/spec/mocks/cache_query.rb +21 -21
  76. data/spec/mocks/create_table.rb +6 -26
  77. data/spec/schema.rb +17 -12
  78. data/spec/spec_helper.rb +11 -2
  79. data/spec/tests/arel_spec.rb +32 -7
  80. data/spec/tests/auxiliary_statement_spec.rb +3 -3
  81. data/spec/tests/belongs_to_many_spec.rb +72 -5
  82. data/spec/tests/enum_set_spec.rb +12 -11
  83. data/spec/tests/enum_spec.rb +4 -2
  84. data/spec/tests/full_text_seach_test.rb +280 -0
  85. data/spec/tests/function_spec.rb +42 -0
  86. data/spec/tests/has_many_spec.rb +21 -8
  87. data/spec/tests/interval_spec.rb +1 -7
  88. data/spec/tests/period_spec.rb +61 -61
  89. data/spec/tests/predicate_builder_spec.rb +132 -0
  90. data/spec/tests/relation_spec.rb +229 -0
  91. data/spec/tests/schema_spec.rb +6 -9
  92. data/spec/tests/table_inheritance_spec.rb +25 -26
  93. data/spec/tests/versioned_commands_spec.rb +513 -0
  94. metadata +64 -39
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torque-postgresql
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-14 00:00:00.000000000 Z
11
+ date: 2025-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.0'
19
+ version: '8.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
- version: '7.0'
26
+ version: '8.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pg
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,20 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12.3'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 12.3.3
47
+ version: '13.0'
51
48
  type: :development
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
52
  - - "~>"
56
53
  - !ruby/object:Gem::Version
57
- version: '12.3'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 12.3.3
54
+ version: '13.0'
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: database_cleaner
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -78,20 +72,14 @@ dependencies:
78
72
  requirements:
79
73
  - - "~>"
80
74
  - !ruby/object:Gem::Version
81
- version: '2.1'
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: 2.1.1
75
+ version: '3.1'
85
76
  type: :development
86
77
  prerelease: false
87
78
  version_requirements: !ruby/object:Gem::Requirement
88
79
  requirements:
89
80
  - - "~>"
90
81
  - !ruby/object:Gem::Version
91
- version: '2.1'
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: 2.1.1
82
+ version: '3.1'
95
83
  - !ruby/object:Gem::Dependency
96
84
  name: rspec
97
85
  requirement: !ruby/object:Gem::Requirement
@@ -99,9 +87,6 @@ dependencies:
99
87
  - - "~>"
100
88
  - !ruby/object:Gem::Version
101
89
  version: '3.5'
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: 3.5.0
105
90
  type: :development
106
91
  prerelease: false
107
92
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,9 +94,6 @@ dependencies:
109
94
  - - "~>"
110
95
  - !ruby/object:Gem::Version
111
96
  version: '3.5'
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: 3.5.0
115
97
  - !ruby/object:Gem::Dependency
116
98
  name: factory_bot
117
99
  requirement: !ruby/object:Gem::Requirement
@@ -119,9 +101,6 @@ dependencies:
119
101
  - - "~>"
120
102
  - !ruby/object:Gem::Version
121
103
  version: '6.2'
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 6.2.1
125
104
  type: :development
126
105
  prerelease: false
127
106
  version_requirements: !ruby/object:Gem::Requirement
@@ -129,25 +108,22 @@ dependencies:
129
108
  - - "~>"
130
109
  - !ruby/object:Gem::Version
131
110
  version: '6.2'
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- version: 6.2.1
135
111
  - !ruby/object:Gem::Dependency
136
112
  name: faker
137
113
  requirement: !ruby/object:Gem::Requirement
138
114
  requirements:
139
115
  - - "~>"
140
116
  - !ruby/object:Gem::Version
141
- version: '2.20'
117
+ version: '3.5'
142
118
  type: :development
143
119
  prerelease: false
144
120
  version_requirements: !ruby/object:Gem::Requirement
145
121
  requirements:
146
122
  - - "~>"
147
123
  - !ruby/object:Gem::Version
148
- version: '2.20'
124
+ version: '3.5'
149
125
  description: Add support to complex resources of PostgreSQL, like data types, array
150
- associations, and auxiliary statements (CTE)
126
+ associations, auxiliary statements (CTE), and full-text search (FTS)
151
127
  email:
152
128
  - me@carlosfsilva.com
153
129
  executables: []
@@ -157,11 +133,18 @@ files:
157
133
  - MIT-LICENSE
158
134
  - README.rdoc
159
135
  - Rakefile
136
+ - lib/generators/torque/function_generator.rb
137
+ - lib/generators/torque/templates/function.sql.erb
138
+ - lib/generators/torque/templates/type.sql.erb
139
+ - lib/generators/torque/templates/view.sql.erb
140
+ - lib/generators/torque/type_generator.rb
141
+ - lib/generators/torque/view_generator.rb
160
142
  - lib/torque-postgresql.rb
161
143
  - lib/torque/postgresql.rb
162
144
  - lib/torque/postgresql/adapter.rb
163
145
  - lib/torque/postgresql/adapter/database_statements.rb
164
146
  - lib/torque/postgresql/adapter/oid.rb
147
+ - lib/torque/postgresql/adapter/oid/array.rb
165
148
  - lib/torque/postgresql/adapter/oid/box.rb
166
149
  - lib/torque/postgresql/adapter/oid/circle.rb
167
150
  - lib/torque/postgresql/adapter/oid/enum.rb
@@ -174,6 +157,7 @@ files:
174
157
  - lib/torque/postgresql/adapter/schema_creation.rb
175
158
  - lib/torque/postgresql/adapter/schema_definitions.rb
176
159
  - lib/torque/postgresql/adapter/schema_dumper.rb
160
+ - lib/torque/postgresql/adapter/schema_overrides.rb
177
161
  - lib/torque/postgresql/adapter/schema_statements.rb
178
162
  - lib/torque/postgresql/arel.rb
179
163
  - lib/torque/postgresql/arel/infix_operation.rb
@@ -195,9 +179,11 @@ files:
195
179
  - lib/torque/postgresql/attributes.rb
196
180
  - lib/torque/postgresql/attributes/builder.rb
197
181
  - lib/torque/postgresql/attributes/builder/enum.rb
182
+ - lib/torque/postgresql/attributes/builder/full_text_search.rb
198
183
  - lib/torque/postgresql/attributes/builder/period.rb
199
184
  - lib/torque/postgresql/attributes/enum.rb
200
185
  - lib/torque/postgresql/attributes/enum_set.rb
186
+ - lib/torque/postgresql/attributes/full_text_search.rb
201
187
  - lib/torque/postgresql/attributes/lazy.rb
202
188
  - lib/torque/postgresql/attributes/period.rb
203
189
  - lib/torque/postgresql/autosave_association.rb
@@ -207,12 +193,18 @@ files:
207
193
  - lib/torque/postgresql/base.rb
208
194
  - lib/torque/postgresql/collector.rb
209
195
  - lib/torque/postgresql/config.rb
196
+ - lib/torque/postgresql/function.rb
210
197
  - lib/torque/postgresql/geometry_builder.rb
211
198
  - lib/torque/postgresql/i18n.rb
212
199
  - lib/torque/postgresql/inheritance.rb
213
200
  - lib/torque/postgresql/insert_all.rb
214
201
  - lib/torque/postgresql/migration.rb
215
202
  - lib/torque/postgresql/migration/command_recorder.rb
203
+ - lib/torque/postgresql/predicate_builder.rb
204
+ - lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb
205
+ - lib/torque/postgresql/predicate_builder/array_handler.rb
206
+ - lib/torque/postgresql/predicate_builder/enumerator_lazy_handler.rb
207
+ - lib/torque/postgresql/predicate_builder/regexp_handler.rb
216
208
  - lib/torque/postgresql/railtie.rb
217
209
  - lib/torque/postgresql/reflection.rb
218
210
  - lib/torque/postgresql/reflection/abstract_reflection.rb
@@ -223,8 +215,10 @@ files:
223
215
  - lib/torque/postgresql/reflection/through_reflection.rb
224
216
  - lib/torque/postgresql/relation.rb
225
217
  - lib/torque/postgresql/relation/auxiliary_statement.rb
218
+ - lib/torque/postgresql/relation/buckets.rb
226
219
  - lib/torque/postgresql/relation/distinct_on.rb
227
220
  - lib/torque/postgresql/relation/inheritance.rb
221
+ - lib/torque/postgresql/relation/join_series.rb
228
222
  - lib/torque/postgresql/relation/merger.rb
229
223
  - lib/torque/postgresql/schema_cache.rb
230
224
  - lib/torque/postgresql/schema_cache/bound_schema_reflection.rb
@@ -232,6 +226,12 @@ files:
232
226
  - lib/torque/postgresql/schema_cache/schema_reflection.rb
233
227
  - lib/torque/postgresql/table_name.rb
234
228
  - lib/torque/postgresql/version.rb
229
+ - lib/torque/postgresql/versioned_commands.rb
230
+ - lib/torque/postgresql/versioned_commands/command_migration.rb
231
+ - lib/torque/postgresql/versioned_commands/generator.rb
232
+ - lib/torque/postgresql/versioned_commands/migration_context.rb
233
+ - lib/torque/postgresql/versioned_commands/migrator.rb
234
+ - lib/torque/postgresql/versioned_commands/schema_table.rb
235
235
  - spec/en.yml
236
236
  - spec/factories/authors.rb
237
237
  - spec/factories/comments.rb
@@ -241,6 +241,14 @@ files:
241
241
  - spec/factories/texts.rb
242
242
  - spec/factories/users.rb
243
243
  - spec/factories/videos.rb
244
+ - spec/fixtures/migrations/20250101000001_create_users.rb
245
+ - spec/fixtures/migrations/20250101000002_create_function_count_users_v1.sql
246
+ - spec/fixtures/migrations/20250101000003_create_internal_users.rb
247
+ - spec/fixtures/migrations/20250101000004_update_function_count_users_v2.sql
248
+ - spec/fixtures/migrations/20250101000005_create_view_all_users_v1.sql
249
+ - spec/fixtures/migrations/20250101000006_create_type_user_id_v1.sql
250
+ - spec/fixtures/migrations/20250101000007_remove_function_count_users_v2.sql
251
+ - spec/initialize.rb
244
252
  - spec/mocks/cache_query.rb
245
253
  - spec/mocks/create_table.rb
246
254
  - spec/models/activity.rb
@@ -273,20 +281,25 @@ files:
273
281
  - spec/tests/distinct_on_spec.rb
274
282
  - spec/tests/enum_set_spec.rb
275
283
  - spec/tests/enum_spec.rb
284
+ - spec/tests/full_text_seach_test.rb
285
+ - spec/tests/function_spec.rb
276
286
  - spec/tests/geometric_builder_spec.rb
277
287
  - spec/tests/has_many_spec.rb
278
288
  - spec/tests/insert_all_spec.rb
279
289
  - spec/tests/interval_spec.rb
280
290
  - spec/tests/lazy_spec.rb
281
291
  - spec/tests/period_spec.rb
292
+ - spec/tests/predicate_builder_spec.rb
282
293
  - spec/tests/quoting_spec.rb
283
294
  - spec/tests/relation_spec.rb
284
295
  - spec/tests/schema_spec.rb
285
296
  - spec/tests/table_inheritance_spec.rb
297
+ - spec/tests/versioned_commands_spec.rb
286
298
  homepage: https://github.com/crashtech/torque-postgresql
287
299
  licenses:
288
300
  - MIT
289
301
  metadata:
302
+ homepage_uri: https://torque.dev/postgresql
290
303
  source_code_uri: https://github.com/crashtech/torque-postgresql
291
304
  bug_tracker_uri: https://github.com/crashtech/torque-postgresql/issues
292
305
  changelog_uri: https://github.com/crashtech/torque-postgresql/releases
@@ -300,14 +313,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
300
313
  requirements:
301
314
  - - ">="
302
315
  - !ruby/object:Gem::Version
303
- version: 2.7.2
316
+ version: '3.2'
304
317
  required_rubygems_version: !ruby/object:Gem::Requirement
305
318
  requirements:
306
319
  - - ">="
307
320
  - !ruby/object:Gem::Version
308
321
  version: 1.8.11
309
322
  requirements: []
310
- rubygems_version: 3.4.10
323
+ rubygems_version: 3.5.22
311
324
  signing_key:
312
325
  specification_version: 4
313
326
  summary: ActiveRecord extension to access PostgreSQL advanced resources
@@ -321,6 +334,14 @@ test_files:
321
334
  - spec/factories/texts.rb
322
335
  - spec/factories/users.rb
323
336
  - spec/factories/videos.rb
337
+ - spec/fixtures/migrations/20250101000001_create_users.rb
338
+ - spec/fixtures/migrations/20250101000002_create_function_count_users_v1.sql
339
+ - spec/fixtures/migrations/20250101000003_create_internal_users.rb
340
+ - spec/fixtures/migrations/20250101000004_update_function_count_users_v2.sql
341
+ - spec/fixtures/migrations/20250101000005_create_view_all_users_v1.sql
342
+ - spec/fixtures/migrations/20250101000006_create_type_user_id_v1.sql
343
+ - spec/fixtures/migrations/20250101000007_remove_function_count_users_v2.sql
344
+ - spec/initialize.rb
324
345
  - spec/mocks/cache_query.rb
325
346
  - spec/mocks/create_table.rb
326
347
  - spec/models/activity.rb
@@ -353,13 +374,17 @@ test_files:
353
374
  - spec/tests/distinct_on_spec.rb
354
375
  - spec/tests/enum_set_spec.rb
355
376
  - spec/tests/enum_spec.rb
377
+ - spec/tests/full_text_seach_test.rb
378
+ - spec/tests/function_spec.rb
356
379
  - spec/tests/geometric_builder_spec.rb
357
380
  - spec/tests/has_many_spec.rb
358
381
  - spec/tests/insert_all_spec.rb
359
382
  - spec/tests/interval_spec.rb
360
383
  - spec/tests/lazy_spec.rb
361
384
  - spec/tests/period_spec.rb
385
+ - spec/tests/predicate_builder_spec.rb
362
386
  - spec/tests/quoting_spec.rb
363
387
  - spec/tests/relation_spec.rb
364
388
  - spec/tests/schema_spec.rb
365
389
  - spec/tests/table_inheritance_spec.rb
390
+ - spec/tests/versioned_commands_spec.rb