torque-postgresql 4.1.0 → 4.1.1

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 (194) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +28 -0
  3. data/lib/generators/torque/skill_generator.rb +17 -0
  4. data/lib/generators/torque/templates/trigger.sql.erb +3 -0
  5. data/lib/generators/torque/trigger_generator.rb +13 -0
  6. data/lib/torque/postgresql/adapter/database_statements.rb +9 -0
  7. data/lib/torque/postgresql/adapter/oid/array.rb +0 -4
  8. data/lib/torque/postgresql/adapter/oid/composite.rb +2 -1
  9. data/lib/torque/postgresql/adapter/oid/enum.rb +1 -1
  10. data/lib/torque/postgresql/adapter/oid/enum_set.rb +2 -2
  11. data/lib/torque/postgresql/adapter/oid/interval.rb +1 -1
  12. data/lib/torque/postgresql/adapter/oid/lquery.rb +45 -28
  13. data/lib/torque/postgresql/adapter/oid/ltree.rb +67 -9
  14. data/lib/torque/postgresql/adapter/oid/struct.rb +1 -1
  15. data/lib/torque/postgresql/adapter/oid.rb +13 -0
  16. data/lib/torque/postgresql/adapter/schema_definitions.rb +5 -0
  17. data/lib/torque/postgresql/adapter/schema_dumper.rb +1 -0
  18. data/lib/torque/postgresql/arel/nodes.rb +51 -0
  19. data/lib/torque/postgresql/arel/visitors.rb +46 -0
  20. data/lib/torque/postgresql/attributes/base.rb +10 -7
  21. data/lib/torque/postgresql/attributes/composite.rb +1 -5
  22. data/lib/torque/postgresql/attributes/enum.rb +1 -6
  23. data/lib/torque/postgresql/attributes/lquery.rb +67 -127
  24. data/lib/torque/postgresql/attributes/ltree.rb +35 -83
  25. data/lib/torque/postgresql/base.rb +9 -1
  26. data/lib/torque/postgresql/config.rb +21 -3
  27. data/lib/torque/postgresql/geometry_builder.rb +4 -10
  28. data/lib/torque/postgresql/inheritance.rb +5 -5
  29. data/lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb +1 -1
  30. data/lib/torque/postgresql/predicate_builder/array_handler.rb +16 -8
  31. data/lib/torque/postgresql/predicate_builder/composite_handler.rb +18 -5
  32. data/lib/torque/postgresql/predicate_builder/ltree_handler.rb +86 -18
  33. data/lib/torque/postgresql/predicate_builder/struct_handler.rb +29 -9
  34. data/lib/torque/postgresql/predicate_builder.rb +38 -11
  35. data/lib/torque/postgresql/railtie.rb +17 -0
  36. data/lib/torque/postgresql/relation/auxiliary_statement.rb +7 -3
  37. data/lib/torque/postgresql/relation/buckets.rb +2 -1
  38. data/lib/torque/postgresql/relation/cross_join.rb +193 -0
  39. data/lib/torque/postgresql/relation/inheritance.rb +1 -2
  40. data/lib/torque/postgresql/relation/join_series.rb +1 -0
  41. data/lib/torque/postgresql/relation/merger.rb +9 -0
  42. data/lib/torque/postgresql/relation/segments.rb +140 -0
  43. data/lib/torque/postgresql/relation.rb +23 -4
  44. data/lib/torque/postgresql/version.rb +1 -1
  45. data/lib/torque/postgresql/versioned_commands/command_migration.rb +23 -0
  46. data/lib/torque/postgresql/versioned_commands.rb +39 -0
  47. data/lib/torque/postgresql.rb +0 -2
  48. data/sig/generators/torque/function_generator.rbs +9 -0
  49. data/sig/generators/torque/skill_generator.rbs +7 -0
  50. data/sig/generators/torque/trigger_generator.rbs +9 -0
  51. data/sig/generators/torque/type_generator.rbs +9 -0
  52. data/sig/generators/torque/view_generator.rbs +9 -0
  53. data/sig/manifest.yaml +7 -0
  54. data/sig/torque/postgresql/adapter/database_statements.rbs +42 -0
  55. data/sig/torque/postgresql/adapter/inheritance_statements.rbs +36 -0
  56. data/sig/torque/postgresql/adapter/oid/array.rbs +20 -0
  57. data/sig/torque/postgresql/adapter/oid/box.rbs +28 -0
  58. data/sig/torque/postgresql/adapter/oid/circle.rbs +33 -0
  59. data/sig/torque/postgresql/adapter/oid/composite.rbs +35 -0
  60. data/sig/torque/postgresql/adapter/oid/enum.rbs +28 -0
  61. data/sig/torque/postgresql/adapter/oid/enum_set.rbs +19 -0
  62. data/sig/torque/postgresql/adapter/oid/interval.rbs +20 -0
  63. data/sig/torque/postgresql/adapter/oid/line.rbs +33 -0
  64. data/sig/torque/postgresql/adapter/oid/lquery.rbs +21 -0
  65. data/sig/torque/postgresql/adapter/oid/ltree.rbs +32 -0
  66. data/sig/torque/postgresql/adapter/oid/range.rbs +28 -0
  67. data/sig/torque/postgresql/adapter/oid/segment.rbs +38 -0
  68. data/sig/torque/postgresql/adapter/oid/struct.rbs +41 -0
  69. data/sig/torque/postgresql/adapter/oid/struct_list.rbs +20 -0
  70. data/sig/torque/postgresql/adapter/oid/struct_set.rbs +18 -0
  71. data/sig/torque/postgresql/adapter/oid.rbs +9 -0
  72. data/sig/torque/postgresql/adapter/quoting.rbs +20 -0
  73. data/sig/torque/postgresql/adapter/schema_creation.rbs +13 -0
  74. data/sig/torque/postgresql/adapter/schema_definitions.rbs +55 -0
  75. data/sig/torque/postgresql/adapter/schema_dumper.rbs +37 -0
  76. data/sig/torque/postgresql/adapter/schema_overrides.rbs +46 -0
  77. data/sig/torque/postgresql/adapter/schema_statements.rbs +50 -0
  78. data/sig/torque/postgresql/adapter.rbs +24 -0
  79. data/sig/torque/postgresql/arel/infix_operation.rbs +79 -0
  80. data/sig/torque/postgresql/arel/join_source.rbs +19 -0
  81. data/sig/torque/postgresql/arel/nodes.rbs +83 -0
  82. data/sig/torque/postgresql/arel/operations.rbs +28 -0
  83. data/sig/torque/postgresql/arel/select_manager.rbs +15 -0
  84. data/sig/torque/postgresql/arel/visitors.rbs +30 -0
  85. data/sig/torque/postgresql/arel.rbs +6 -0
  86. data/sig/torque/postgresql/associations/association_scope.rbs +28 -0
  87. data/sig/torque/postgresql/associations/belongs_to_many_association.rbs +51 -0
  88. data/sig/torque/postgresql/associations/builder/belongs_to_many.rbs +24 -0
  89. data/sig/torque/postgresql/associations/builder/has_many.rbs +15 -0
  90. data/sig/torque/postgresql/associations/builder.rbs +8 -0
  91. data/sig/torque/postgresql/associations/foreign_association.rbs +16 -0
  92. data/sig/torque/postgresql/associations/join_dependency.rbs +16 -0
  93. data/sig/torque/postgresql/associations/preloader/association.rbs +32 -0
  94. data/sig/torque/postgresql/associations/preloader/loader_query.rbs +20 -0
  95. data/sig/torque/postgresql/associations/preloader.rbs +8 -0
  96. data/sig/torque/postgresql/associations.rbs +17 -0
  97. data/sig/torque/postgresql/attributes/base.rbs +37 -0
  98. data/sig/torque/postgresql/attributes/builder/enum.rbs +38 -0
  99. data/sig/torque/postgresql/attributes/builder/full_text_search.rbs +27 -0
  100. data/sig/torque/postgresql/attributes/builder/period.rbs +106 -0
  101. data/sig/torque/postgresql/attributes/builder.rbs +19 -0
  102. data/sig/torque/postgresql/attributes/composite.rbs +28 -0
  103. data/sig/torque/postgresql/attributes/enum.rbs +69 -0
  104. data/sig/torque/postgresql/attributes/enum_set.rbs +75 -0
  105. data/sig/torque/postgresql/attributes/full_text_search.rbs +13 -0
  106. data/sig/torque/postgresql/attributes/lazy.rbs +17 -0
  107. data/sig/torque/postgresql/attributes/lquery.rbs +48 -0
  108. data/sig/torque/postgresql/attributes/ltree.rbs +46 -0
  109. data/sig/torque/postgresql/attributes/period.rbs +13 -0
  110. data/sig/torque/postgresql/attributes/simple_enum.rbs +39 -0
  111. data/sig/torque/postgresql/attributes/struct.rbs +38 -0
  112. data/sig/torque/postgresql/attributes.rbs +6 -0
  113. data/sig/torque/postgresql/autosave_association.rbs +16 -0
  114. data/sig/torque/postgresql/auxiliary_statement/recursive.rbs +22 -0
  115. data/sig/torque/postgresql/auxiliary_statement/settings.rbs +63 -0
  116. data/sig/torque/postgresql/auxiliary_statement.rbs +57 -0
  117. data/sig/torque/postgresql/base.rbs +41 -0
  118. data/sig/torque/postgresql/collector.rbs +7 -0
  119. data/sig/torque/postgresql/config.rbs +9 -0
  120. data/sig/torque/postgresql/function.rbs +21 -0
  121. data/sig/torque/postgresql/geometry_builder.rbs +20 -0
  122. data/sig/torque/postgresql/i18n.rbs +15 -0
  123. data/sig/torque/postgresql/inheritance/expander.rbs +23 -0
  124. data/sig/torque/postgresql/inheritance/record.rbs +20 -0
  125. data/sig/torque/postgresql/inheritance.rbs +47 -0
  126. data/sig/torque/postgresql/insert_all.rbs +22 -0
  127. data/sig/torque/postgresql/migration/command_recorder.rbs +30 -0
  128. data/sig/torque/postgresql/migration.rbs +6 -0
  129. data/sig/torque/postgresql/predicate_builder/arel_attribute_handler.rbs +15 -0
  130. data/sig/torque/postgresql/predicate_builder/array_handler.rbs +26 -0
  131. data/sig/torque/postgresql/predicate_builder/composite_handler.rbs +26 -0
  132. data/sig/torque/postgresql/predicate_builder/enumerator_lazy_handler.rbs +18 -0
  133. data/sig/torque/postgresql/predicate_builder/ltree_handler.rbs +36 -0
  134. data/sig/torque/postgresql/predicate_builder/regexp_handler.rbs +16 -0
  135. data/sig/torque/postgresql/predicate_builder/struct_handler.rbs +24 -0
  136. data/sig/torque/postgresql/predicate_builder.rbs +23 -0
  137. data/sig/torque/postgresql/predicate_table.rbs +24 -0
  138. data/sig/torque/postgresql/railtie.rbs +10 -0
  139. data/sig/torque/postgresql/reflection/abstract_reflection.rbs +22 -0
  140. data/sig/torque/postgresql/reflection/association_reflection.rbs +18 -0
  141. data/sig/torque/postgresql/reflection/belongs_to_many_reflection.rbs +30 -0
  142. data/sig/torque/postgresql/reflection/has_many_reflection.rbs +14 -0
  143. data/sig/torque/postgresql/reflection/runtime_reflection.rbs +18 -0
  144. data/sig/torque/postgresql/reflection/through_reflection.rbs +14 -0
  145. data/sig/torque/postgresql/reflection.rbs +11 -0
  146. data/sig/torque/postgresql/relation/auxiliary_statement.rbs +29 -0
  147. data/sig/torque/postgresql/relation/buckets.rbs +35 -0
  148. data/sig/torque/postgresql/relation/cross_join.rbs +63 -0
  149. data/sig/torque/postgresql/relation/distinct_on.rbs +16 -0
  150. data/sig/torque/postgresql/relation/inheritance.rbs +48 -0
  151. data/sig/torque/postgresql/relation/join_series.rbs +28 -0
  152. data/sig/torque/postgresql/relation/merger.rbs +23 -0
  153. data/sig/torque/postgresql/relation/segments.rbs +27 -0
  154. data/sig/torque/postgresql/relation.rbs +48 -0
  155. data/sig/torque/postgresql/schema_cache/bound_schema_reflection.rbs +14 -0
  156. data/sig/torque/postgresql/schema_cache/inheritance.rbs +12 -0
  157. data/sig/torque/postgresql/schema_cache/schema_reflection.rbs +14 -0
  158. data/sig/torque/postgresql/schema_cache.rbs +43 -0
  159. data/sig/torque/postgresql/table_name.rbs +20 -0
  160. data/sig/torque/postgresql/validations.rbs +13 -0
  161. data/sig/torque/postgresql/version.rbs +5 -0
  162. data/sig/torque/postgresql/versioned_commands/command_migration.rbs +54 -0
  163. data/sig/torque/postgresql/versioned_commands/generator.rbs +17 -0
  164. data/sig/torque/postgresql/versioned_commands/migration_context.rbs +30 -0
  165. data/sig/torque/postgresql/versioned_commands/migrator.rbs +19 -0
  166. data/sig/torque/postgresql/versioned_commands/schema_table.rbs +23 -0
  167. data/sig/torque/postgresql/versioned_commands.rbs +25 -0
  168. data/sig/torque/postgresql.rbs +26 -0
  169. data/skills/torque-postgresql/SKILL.md +70 -0
  170. data/spec/fixtures/migrations/20250101000008_create_trigger_audit_users_v1.sql +3 -0
  171. data/spec/initialize.rb +9 -0
  172. data/spec/mocks/cache_query.rb +1 -1
  173. data/spec/rbs_helper.rb +8 -0
  174. data/spec/schema.rb +2 -0
  175. data/spec/spec_helper.rb +1 -0
  176. data/spec/tests/arel_spec.rb +1 -3
  177. data/spec/tests/auxiliary_statement_spec.rb +12 -0
  178. data/spec/tests/buckets_spec.rb +122 -0
  179. data/spec/tests/composite_spec.rb +67 -0
  180. data/spec/tests/cross_join_spec.rb +185 -0
  181. data/spec/tests/distinct_on_spec.rb +5 -0
  182. data/spec/tests/enum_set_spec.rb +4 -0
  183. data/spec/tests/enum_spec.rb +20 -4
  184. data/spec/tests/geometric_builder_spec.rb +16 -5
  185. data/spec/tests/has_many_spec.rb +2 -1
  186. data/spec/tests/interval_spec.rb +6 -0
  187. data/spec/tests/ltree_spec.rb +398 -64
  188. data/spec/tests/predicate_builder_spec.rb +120 -0
  189. data/spec/tests/relation_spec.rb +25 -69
  190. data/spec/tests/segments_spec.rb +264 -0
  191. data/spec/tests/struct_spec.rb +202 -0
  192. data/spec/tests/table_inheritance_spec.rb +10 -0
  193. data/spec/tests/versioned_commands_spec.rb +145 -0
  194. metadata +153 -2
@@ -0,0 +1,47 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ class InheritanceError < ArgumentError
4
+ end
5
+
6
+ module Inheritance
7
+ extend ActiveSupport::Concern
8
+
9
+ type dependents = Hash[String, model]
10
+
11
+ module ClassMethods
12
+ def _record_class_attribute: () -> Symbol
13
+ def _record_class_column_name: () -> String
14
+ def inheritance_merged_attributes: () -> Array[String]
15
+ def inheritance_mergeable_attributes: () -> Array[String]
16
+ def physically_inherited?: () -> bool
17
+ def inheritance_dependents: () -> Array[String]
18
+ def physically_inheritances?: () -> bool
19
+ def inheritance_column_prefix: () -> String
20
+ def physically_inheritance_root: () -> model
21
+ def inheritance_foreign_attribute_names: () -> Set[String]
22
+ def inheritance_dependent_prefixes: () -> Set[String]
23
+ def casted_dependents: () -> dependents
24
+ def inheritance_expandable_dependents: () -> dependents
25
+ def reset_table_name: () -> (String | TableName)
26
+ def decorated_table_name: () -> String
27
+ def base_class: () -> model
28
+ def primary_key: () -> (String | Array[String] | nil)
29
+ def compute_table_name: () -> (String | TableName)
30
+ def raise_unable_to_cast: (String record_class_value) -> bot
31
+ def reload_schema_from_cache: (?bool recursive) -> untyped
32
+
33
+ private
34
+
35
+ def inheritance_cache: (Symbol name) { () -> untyped } -> untyped
36
+ def instantiate_instance_of: (model klass, Hash[String, untyped] attributes, ?Hash[String, type_caster] types) ?{ (record) -> void } -> record
37
+ def sanitize_attributes: (model real_class, Hash[String, untyped] attributes, Hash[String, type_caster] types) -> [Hash[String, untyped], Hash[String, type_caster]]
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ class ActiveRecord::Base
44
+ include Torque::PostgreSQL::Inheritance
45
+ extend Torque::PostgreSQL::Inheritance::ClassMethods
46
+ include Torque::PostgreSQL::Inheritance::Record
47
+ end
@@ -0,0 +1,22 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module InsertAll
4
+ attr_reader where: String | relation | nil
5
+
6
+ def initialize: (*untyped args, ?where: String | relation | nil, **untyped xargs) -> void
7
+
8
+ module Builder
9
+ def where: () -> (String | relation | nil)
10
+ def where_condition?: () -> bool
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ class ActiveRecord::InsertAll
17
+ prepend Torque::PostgreSQL::InsertAll
18
+
19
+ class Builder
20
+ include Torque::PostgreSQL::InsertAll::Builder
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Migration
4
+ module CommandRecorder
5
+ type inversion = [Symbol, Array[untyped]]
6
+
7
+ def rename_type: (*untyped args) ?{ (?) -> untyped } -> untyped
8
+ def invert_rename_type: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
9
+ def create_composite_type: (*untyped args) ?{ (?) -> untyped } -> untyped
10
+ def invert_create_composite_type: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
11
+ def change_composite_type: (*untyped args) ?{ (?) -> untyped } -> untyped
12
+ def add_composite_column: (*untyped args) ?{ (?) -> untyped } -> untyped
13
+ def invert_add_composite_column: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
14
+ def remove_composite_column: (*untyped args) ?{ (?) -> untyped } -> untyped
15
+ def invert_remove_composite_column: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
16
+ def change_composite_column: (*untyped args) ?{ (?) -> untyped } -> untyped
17
+ def rename_composite_column: (*untyped args) ?{ (?) -> untyped } -> untyped
18
+ def invert_rename_composite_column: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
19
+ def sync_inheritance_features: (*untyped args) ?{ (?) -> untyped } -> untyped
20
+ def invert_sync_inheritance_features: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
21
+ def create_schema: (*untyped args) ?{ (?) -> untyped } -> untyped
22
+ def invert_create_schema: (Array[untyped] args) ?{ (?) -> untyped } -> inversion
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ class ActiveRecord::Migration::CommandRecorder
29
+ include Torque::PostgreSQL::Migration::CommandRecorder
30
+ end
@@ -0,0 +1,6 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Migration
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class ArelAttributeHandler
5
+ def self.call: (arel_node attribute, arel_node value) -> arel_node
6
+ def initialize: (*untyped) -> void
7
+ def call: (arel_node attribute, arel_node value) -> arel_node
8
+
9
+ private
10
+
11
+ def array_typed?: (arel_node attribute) -> bool
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ module ArrayHandler
5
+ def call: (arel_node attribute, untyped value) -> arel_node
6
+ def call_for_array: (arel_node attribute, untyped value) -> arel_node
7
+
8
+ private
9
+
10
+ def call_with_value: (arel_node attribute, untyped value) -> ::Arel::Nodes::InfixOperation
11
+ def call_with_array: (arel_node attribute, Array[untyped] value) -> ::Arel::Nodes::InfixOperation
12
+ def call_with_empty: (arel_node attribute) -> arel_node
13
+ def id_of: (untyped entry) -> untyped
14
+ def array_attribute?: (arel_node attribute) -> bool
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ class ActiveRecord::PredicateBuilder::ArrayHandler
21
+ prepend Torque::PostgreSQL::PredicateBuilder::ArrayHandler
22
+ end
23
+
24
+ class ActiveRecord::PredicateBuilder::BasicObjectHandler
25
+ prepend Torque::PostgreSQL::PredicateBuilder::ArrayHandler
26
+ end
@@ -0,0 +1,26 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class CompositeHandler
5
+ @predicate_builder: ActiveRecord::PredicateBuilder
6
+ @composite: Adapter::OID::Composite?
7
+
8
+ def self.candidate?: (type_caster? type, ?untyped value) -> bool
9
+ def self.columns?: (untyped value) -> bool
10
+ def initialize: (ActiveRecord::PredicateBuilder predicate_builder) -> void
11
+ def call: (arel_node attribute, type_caster type, untyped value) -> arel_node
12
+ def table_for: (arel_node source, type_caster type) -> PredicateTable
13
+ def type_of: (column_ref name) -> [type_caster]
14
+
15
+ private
16
+
17
+ def predicate_builder: () -> ActiveRecord::PredicateBuilder
18
+ def composite: () -> Adapter::OID::Composite?
19
+ def call_for_record: (arel_node attribute, untyped value, bool array) -> arel_node
20
+ def call_for_array: (arel_node attribute, untyped value) -> arel_node
21
+ def conditions_for: (arel_node source, untyped value) -> arel_node
22
+ def group_for: (arel_node source, untyped entry) -> ::Arel::Nodes::Grouping
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class EnumeratorLazyHandler < ::ActiveRecord::PredicateBuilder::ArrayHandler
5
+ class Timeout < ::Timeout::Error
6
+ end
7
+
8
+ def call: (arel_attribute attribute, Enumerator::Lazy[untyped, untyped] value) -> arel_node
9
+
10
+ private
11
+
12
+ def with_timeout: () { () -> arel_node } -> arel_node
13
+ def timeout: () -> Numeric?
14
+ def limit: () -> Integer?
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,36 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class LtreeHandler
5
+ @predicate_builder: ActiveRecord::PredicateBuilder
6
+ @attribute: arel_attribute
7
+ @column: Adapter::OID::Ltree
8
+ @array: bool
9
+ @list: bool
10
+
11
+ def self.candidate?: (type_caster? type) -> bool
12
+ def self.column_of: (type_caster? type) -> type_caster?
13
+ def initialize: (ActiveRecord::PredicateBuilder predicate_builder) -> void
14
+ def call: (arel_attribute attribute, type_caster type, untyped value) -> arel_node
15
+
16
+ private
17
+
18
+ def attribute: () -> arel_attribute
19
+ def column: () -> Adapter::OID::Ltree
20
+ def array: () -> bool
21
+ def list: () -> bool
22
+ def list?: (untyped value) -> bool
23
+ def lquery_column?: () -> bool
24
+ def lquery: () -> Adapter::OID::Lquery
25
+ def ltree: () -> Adapter::OID::Ltree
26
+ def bind: (untyped value, type_caster type) -> ::Arel::Nodes::BindParam
27
+ def equality: (Array[untyped] values) -> arel_node
28
+ def single_equality: (arel_node target, arel_node bind) -> arel_node
29
+ def empty_equality: (arel_node target) -> arel_node
30
+ def match: (Array[untyped] values) -> arel_node
31
+ def single_match: (arel_node bind) -> arel_node
32
+ def list_match: (arel_node binds) -> arel_node
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,16 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class RegexpHandler
5
+ @predicate_builder: ActiveRecord::PredicateBuilder
6
+
7
+ def initialize: (ActiveRecord::PredicateBuilder predicate_builder) -> void
8
+ def call: (arel_attribute attribute, Regexp value) -> ::Arel::Nodes::InfixOperation
9
+
10
+ private
11
+
12
+ def predicate_builder: () -> ActiveRecord::PredicateBuilder
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module PredicateBuilder
4
+ class StructHandler
5
+ PLAIN_TYPES: Array[Symbol]
6
+
7
+ @predicate_builder: ActiveRecord::PredicateBuilder
8
+ @struct: type_caster?
9
+
10
+ def self.candidate?: (type_caster? type, ?untyped value) -> bool
11
+ def initialize: (ActiveRecord::PredicateBuilder predicate_builder) -> void
12
+ def call: (arel_node attribute, type_caster struct, Hash[untyped, untyped] value) -> ::Arel::Nodes::Grouping
13
+ def table_for: (arel_node attribute, type_caster? struct) -> PredicateTable
14
+ def property_for: (arel_node attribute, type_caster? struct, Array[path_key] path) -> arel_node
15
+ def type_of: (path_key name) -> [type_caster?, String?]
16
+
17
+ private
18
+
19
+ def predicate_builder: () -> ActiveRecord::PredicateBuilder
20
+ def cast_for: (type_caster? type) -> String?
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ # initialize is not declared: the handler files reopen this module before
4
+ # it is defined, and the runtime checker hooks it eagerly
5
+ module PredicateBuilder
6
+ type handler = singleton(CompositeHandler) | singleton(StructHandler) | singleton(LtreeHandler)
7
+
8
+ ARRAY_OID: singleton(ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array)
9
+
10
+ def self.handler_for: (type_caster? type, ?untyped value) -> handler?
11
+ def build: (arel_node attribute, untyped value, ?Symbol? operator) -> arel_node
12
+ def resolve_arel_attribute: (column_ref table_name, column_ref column_name) ?{ (?) -> untyped } -> arel_node
13
+
14
+ private
15
+
16
+ def handler_for_path: (arel_node attribute, untyped value) -> singleton(StructHandler)?
17
+ end
18
+ end
19
+ end
20
+
21
+ class ActiveRecord::PredicateBuilder
22
+ prepend Torque::PostgreSQL::PredicateBuilder
23
+ end
@@ -0,0 +1,24 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ class PredicateTable
4
+ type handler = PredicateBuilder::CompositeHandler | PredicateBuilder::StructHandler
5
+ type node = Arel::Nodes::Column | Arel::Nodes::Property
6
+
7
+ @handler: handler
8
+ @source: arel_node
9
+ @node: singleton(::Arel::Nodes::Binary)
10
+
11
+ def initialize: (handler handler, arel_node source, singleton(::Arel::Nodes::Binary) node) -> void
12
+ def arel_table: () -> self
13
+ def []: (column_ref | Integer name) -> node
14
+ def type: (column_ref | Integer name) -> type_caster?
15
+ def has_column?: (*untyped) -> true
16
+ def primary_key: () -> nil
17
+ def associated_with: (*untyped) -> false
18
+ alias associated_with? associated_with
19
+ def aggregated_with?: (*untyped) -> false
20
+ def polymorphic_association?: () -> false
21
+ def through_association?: () -> false
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ class Railtie < Rails::Railtie
4
+ end
5
+ end
6
+ end
7
+
8
+ module ActiveRecord::Schema::Definition
9
+ include Torque::PostgreSQL::Adapter::Definition
10
+ end
@@ -0,0 +1,22 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ module AbstractReflection
5
+ AREL_ATTR: singleton(::Arel::Attributes::Attribute)
6
+ AREL_NODE: singleton(::Arel::Nodes::Node)
7
+
8
+ def connected_through_array?: () -> bool
9
+ def join_scope: (table_node table, table_node foreign_table, model | relation foreign_klass) -> relation
10
+ def build_join_constraint: (table_node table, table_node foreign_table) -> arel_node
11
+
12
+ private
13
+
14
+ def build_id_constraint_between: (table_node table, table_node foreign_table) -> arel_node
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ class ActiveRecord::Reflection::AbstractReflection
21
+ prepend Torque::PostgreSQL::Reflection::AbstractReflection
22
+ end
@@ -0,0 +1,18 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ module AssociationReflection
5
+ def initialize: (Symbol name, Proc? scope, Hash[Symbol, untyped] options, model active_record) -> void
6
+
7
+ private
8
+
9
+ def derive_foreign_key: (*untyped, **untyped) -> String
10
+ def automatic_inverse_of: () -> Symbol?
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ class ActiveRecord::Reflection::AssociationReflection
17
+ prepend Torque::PostgreSQL::Reflection::AssociationReflection
18
+ end
@@ -0,0 +1,30 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ class BelongsToManyReflection < ::ActiveRecord::Reflection::AssociationReflection
5
+ @foreign_key: String
6
+ @association_foreign_key: String
7
+ @active_record_primary_key: String?
8
+
9
+ def macro: () -> :belongs_to_many
10
+ def connected_through_array?: () -> true
11
+ def belongs_to?: () -> true
12
+ def collection?: () -> true
13
+ def association_class: () -> singleton(Associations::BelongsToManyAssociation)
14
+ def foreign_key: () -> String
15
+ def association_foreign_key: () -> String
16
+ def active_record_primary_key: () -> String?
17
+ def join_primary_key: (*untyped) -> String?
18
+ def join_foreign_key: () -> String
19
+ def array_attribute: () -> arel_attribute
20
+
21
+ private
22
+
23
+ def derive_primary_key: () -> String?
24
+ def derive_foreign_key: () -> String
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ class ActiveRecord::Reflection::BelongsToManyReflection = Torque::PostgreSQL::Reflection::BelongsToManyReflection
@@ -0,0 +1,14 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ module HasManyReflection
5
+ def connected_through_array?: () -> bool?
6
+ def array_attribute: () -> arel_attribute
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ class ActiveRecord::Reflection::HasManyReflection
13
+ include Torque::PostgreSQL::Reflection::HasManyReflection
14
+ end
@@ -0,0 +1,18 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ module RuntimeReflection
5
+ def klass: () -> model
6
+ def active_record: () -> model
7
+ def connected_through_array?: () -> bool?
8
+ def macro: () -> Symbol
9
+ def name: () -> Symbol
10
+ def array_attribute: () -> arel_attribute
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ class ActiveRecord::Reflection::RuntimeReflection
17
+ include Torque::PostgreSQL::Reflection::RuntimeReflection
18
+ end
@@ -0,0 +1,14 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ module ThroughReflection
5
+ def build_id_constraint: (*untyped) -> arel_node
6
+ def connected_through_array?: () -> bool?
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ class ActiveRecord::Reflection::ThroughReflection
13
+ include Torque::PostgreSQL::Reflection::ThroughReflection
14
+ end
@@ -0,0 +1,11 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Reflection
4
+ def create: (Symbol macro, Symbol name, Proc? scope, Hash[Symbol, untyped] options, model ar) -> reflection?
5
+ end
6
+ end
7
+ end
8
+
9
+ module ActiveRecord::Reflection
10
+ extend Torque::PostgreSQL::Reflection
11
+ end
@@ -0,0 +1,29 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Relation
4
+ module AuxiliaryStatement
5
+ type statement = Symbol | singleton(PostgreSQL::AuxiliaryStatement)
6
+
7
+ def auxiliary_statements_values: () -> Array[PostgreSQL::AuxiliaryStatement]
8
+ def auxiliary_statements_values=: (Array[PostgreSQL::AuxiliaryStatement] value) -> Array[PostgreSQL::AuxiliaryStatement]
9
+ def with: (*statement args, ?recursive: bool, **untyped settings) -> relation
10
+ def with!: (*statement args, ?recursive: bool, **untyped settings) -> self
11
+ alias auxiliary_statements with
12
+ alias auxiliary_statements! with!
13
+ def bound_attributes: () -> Array[untyped]
14
+
15
+ private
16
+
17
+ def build_arel: (*untyped) -> ::Arel::SelectManager
18
+ def instantiate_auxiliary_statements: (*statement args, **untyped options) -> Array[PostgreSQL::AuxiliaryStatement]
19
+ def build_auxiliary_statements: (::Arel::SelectManager arel) -> Array[untyped]?
20
+ def auxiliary_statement_type: () -> (:recursive)?
21
+ def auxiliary_statement_error: (Symbol | String name) -> bot
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ class ActiveRecord::Relation
28
+ include Torque::PostgreSQL::Relation::AuxiliaryStatement
29
+ end
@@ -0,0 +1,35 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Relation
4
+ module Buckets
5
+ type keys = Array[untyped] | ::Range[untyped]
6
+ type value = [arel_node, keys, Integer?, column_ref?, column_ref?]
7
+
8
+ def buckets_value: () -> value?
9
+ def buckets_value=: (value? value) -> value?
10
+ def buckets: (column_spec | arel_node attribute, keys values, ?count: Integer?, ?cast: column_ref?, ?as: column_ref?) -> relation
11
+ def buckets!: (column_spec | arel_node attribute, keys values, ?count: Integer?, ?cast: column_ref?, ?as: column_ref?) -> self
12
+ def calculate: (*untyped) -> untyped
13
+
14
+ module Initializer
15
+ def records: () -> (Array[record] | Hash[untyped, Array[record]])
16
+ end
17
+
18
+ private
19
+
20
+ def build_arel: (*untyped) -> ::Arel::SelectManager
21
+ def build_buckets_node: () -> ::Arel::Nodes::NamedFunction
22
+ def buckets_column: () -> String
23
+ def buckets_keys: () -> Array[untyped]
24
+ end
25
+
26
+ module Initializer
27
+ include Buckets::Initializer
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ class ActiveRecord::Relation
34
+ include Torque::PostgreSQL::Relation::Buckets
35
+ end
@@ -0,0 +1,63 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Relation
4
+ module CrossJoin
5
+ type row = Hash[column_ref, untyped] | Array[untyped]
6
+ type source = arel_node | relation | ::Arel::SelectManager | Array[row]
7
+ type ordinality = bool | column_ref
8
+
9
+ class Entry < ::Struct[untyped]
10
+ def node: () -> ::Arel::Nodes::Join
11
+ def node=: (::Arel::Nodes::Join value) -> ::Arel::Nodes::Join
12
+ def table: () -> arel_table
13
+ def table=: (arel_table value) -> arel_table
14
+ end
15
+
16
+ def self.build: (untyped source, column_ref as, Array[column_ref]? columns, Symbol | String mode, ordinality with_ordinality, ?Hash[column_ref, String?]? definitions) -> Entry
17
+
18
+ private
19
+
20
+ def self.columns_for: (untyped source, Array[column_ref]? columns) -> Array[column_ref]?
21
+ def self.ordinality_for: (ordinality value) -> column_ref?
22
+ def self.validate_ordinality!: (column_ref? ordinality, Array[column_ref]? columns, Hash[column_ref, String?]? definitions) -> nil
23
+ def self.source_for: (untyped source, Array[column_ref]? columns) -> [arel_node, bool]
24
+ def self.unnest_rows: (Array[row] rows, Array[column_ref]? columns) -> ::Arel::Nodes::NamedFunction
25
+ def self.row_values: (row row, Array[Symbol] keys) -> Array[untyped]
26
+ def self.join_for: (Symbol | String mode, Torque::PostgreSQL::Arel::Nodes::FromItem item) -> ::Arel::Nodes::Join
27
+
28
+ public
29
+
30
+ def cross_joins_value: () -> Hash[Symbol, Entry]
31
+ def cross_joins_value=: (Hash[Symbol, Entry] value) -> Hash[Symbol, Entry]
32
+ def cross_join: (untyped source, as: column_ref, ?columns: Array[column_ref]?, ?mode: Symbol | String, ?with_ordinality: ordinality) -> relation
33
+ def cross_join!: (untyped source, as: column_ref, ?columns: Array[column_ref]?, ?mode: Symbol | String, ?with_ordinality: ordinality) -> self
34
+
35
+ private
36
+
37
+ def build_arel: (*untyped) -> ::Arel::SelectManager
38
+
39
+ public
40
+
41
+ module Merger
42
+ def merge: () -> relation
43
+
44
+ private
45
+
46
+ def merge_cross_joins: () -> untyped
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ class ActiveRecord::Relation
54
+ include Torque::PostgreSQL::Relation::CrossJoin
55
+ end
56
+
57
+ class ActiveRecord::Relation::Merger
58
+ prepend Torque::PostgreSQL::Relation::CrossJoin::Merger
59
+ end
60
+
61
+ class ActiveRecord::Base
62
+ def self.cross_join: (untyped source, as: Torque::PostgreSQL::column_ref, ?columns: Array[Torque::PostgreSQL::column_ref]?, ?mode: Symbol | String, ?with_ordinality: Torque::PostgreSQL::Relation::CrossJoin::ordinality) -> ActiveRecord::Relation
63
+ end
@@ -0,0 +1,16 @@
1
+ module Torque
2
+ module PostgreSQL
3
+ module Relation
4
+ module DistinctOn
5
+ def distinct_on_values: () -> Array[column_spec]
6
+ def distinct_on_values=: (Array[column_spec] value) -> Array[column_spec]
7
+ def distinct_on: (*column_spec value) -> relation
8
+ def distinct_on!: (*column_spec value) -> self
9
+
10
+ private
11
+
12
+ def build_arel: (*untyped) -> ::Arel::SelectManager
13
+ end
14
+ end
15
+ end
16
+ end