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.
- checksums.yaml +4 -4
- data/Rakefile +28 -0
- data/lib/generators/torque/skill_generator.rb +17 -0
- data/lib/generators/torque/templates/trigger.sql.erb +3 -0
- data/lib/generators/torque/trigger_generator.rb +13 -0
- data/lib/torque/postgresql/adapter/database_statements.rb +9 -0
- data/lib/torque/postgresql/adapter/oid/array.rb +0 -4
- data/lib/torque/postgresql/adapter/oid/composite.rb +2 -1
- data/lib/torque/postgresql/adapter/oid/enum.rb +1 -1
- data/lib/torque/postgresql/adapter/oid/enum_set.rb +2 -2
- data/lib/torque/postgresql/adapter/oid/interval.rb +1 -1
- data/lib/torque/postgresql/adapter/oid/lquery.rb +45 -28
- data/lib/torque/postgresql/adapter/oid/ltree.rb +67 -9
- data/lib/torque/postgresql/adapter/oid/struct.rb +1 -1
- data/lib/torque/postgresql/adapter/oid.rb +13 -0
- data/lib/torque/postgresql/adapter/schema_definitions.rb +5 -0
- data/lib/torque/postgresql/adapter/schema_dumper.rb +1 -0
- data/lib/torque/postgresql/arel/nodes.rb +51 -0
- data/lib/torque/postgresql/arel/visitors.rb +46 -0
- data/lib/torque/postgresql/attributes/base.rb +10 -7
- data/lib/torque/postgresql/attributes/composite.rb +1 -5
- data/lib/torque/postgresql/attributes/enum.rb +1 -6
- data/lib/torque/postgresql/attributes/lquery.rb +67 -127
- data/lib/torque/postgresql/attributes/ltree.rb +35 -83
- data/lib/torque/postgresql/base.rb +9 -1
- data/lib/torque/postgresql/config.rb +21 -3
- data/lib/torque/postgresql/geometry_builder.rb +4 -10
- data/lib/torque/postgresql/inheritance.rb +5 -5
- data/lib/torque/postgresql/predicate_builder/arel_attribute_handler.rb +1 -1
- data/lib/torque/postgresql/predicate_builder/array_handler.rb +16 -8
- data/lib/torque/postgresql/predicate_builder/composite_handler.rb +18 -5
- data/lib/torque/postgresql/predicate_builder/ltree_handler.rb +86 -18
- data/lib/torque/postgresql/predicate_builder/struct_handler.rb +29 -9
- data/lib/torque/postgresql/predicate_builder.rb +38 -11
- data/lib/torque/postgresql/railtie.rb +17 -0
- data/lib/torque/postgresql/relation/auxiliary_statement.rb +7 -3
- data/lib/torque/postgresql/relation/buckets.rb +2 -1
- data/lib/torque/postgresql/relation/cross_join.rb +193 -0
- data/lib/torque/postgresql/relation/inheritance.rb +1 -2
- data/lib/torque/postgresql/relation/join_series.rb +1 -0
- data/lib/torque/postgresql/relation/merger.rb +9 -0
- data/lib/torque/postgresql/relation/segments.rb +140 -0
- data/lib/torque/postgresql/relation.rb +23 -4
- data/lib/torque/postgresql/version.rb +1 -1
- data/lib/torque/postgresql/versioned_commands/command_migration.rb +23 -0
- data/lib/torque/postgresql/versioned_commands.rb +39 -0
- data/lib/torque/postgresql.rb +0 -2
- data/sig/generators/torque/function_generator.rbs +9 -0
- data/sig/generators/torque/skill_generator.rbs +7 -0
- data/sig/generators/torque/trigger_generator.rbs +9 -0
- data/sig/generators/torque/type_generator.rbs +9 -0
- data/sig/generators/torque/view_generator.rbs +9 -0
- data/sig/manifest.yaml +7 -0
- data/sig/torque/postgresql/adapter/database_statements.rbs +42 -0
- data/sig/torque/postgresql/adapter/inheritance_statements.rbs +36 -0
- data/sig/torque/postgresql/adapter/oid/array.rbs +20 -0
- data/sig/torque/postgresql/adapter/oid/box.rbs +28 -0
- data/sig/torque/postgresql/adapter/oid/circle.rbs +33 -0
- data/sig/torque/postgresql/adapter/oid/composite.rbs +35 -0
- data/sig/torque/postgresql/adapter/oid/enum.rbs +28 -0
- data/sig/torque/postgresql/adapter/oid/enum_set.rbs +19 -0
- data/sig/torque/postgresql/adapter/oid/interval.rbs +20 -0
- data/sig/torque/postgresql/adapter/oid/line.rbs +33 -0
- data/sig/torque/postgresql/adapter/oid/lquery.rbs +21 -0
- data/sig/torque/postgresql/adapter/oid/ltree.rbs +32 -0
- data/sig/torque/postgresql/adapter/oid/range.rbs +28 -0
- data/sig/torque/postgresql/adapter/oid/segment.rbs +38 -0
- data/sig/torque/postgresql/adapter/oid/struct.rbs +41 -0
- data/sig/torque/postgresql/adapter/oid/struct_list.rbs +20 -0
- data/sig/torque/postgresql/adapter/oid/struct_set.rbs +18 -0
- data/sig/torque/postgresql/adapter/oid.rbs +9 -0
- data/sig/torque/postgresql/adapter/quoting.rbs +20 -0
- data/sig/torque/postgresql/adapter/schema_creation.rbs +13 -0
- data/sig/torque/postgresql/adapter/schema_definitions.rbs +55 -0
- data/sig/torque/postgresql/adapter/schema_dumper.rbs +37 -0
- data/sig/torque/postgresql/adapter/schema_overrides.rbs +46 -0
- data/sig/torque/postgresql/adapter/schema_statements.rbs +50 -0
- data/sig/torque/postgresql/adapter.rbs +24 -0
- data/sig/torque/postgresql/arel/infix_operation.rbs +79 -0
- data/sig/torque/postgresql/arel/join_source.rbs +19 -0
- data/sig/torque/postgresql/arel/nodes.rbs +83 -0
- data/sig/torque/postgresql/arel/operations.rbs +28 -0
- data/sig/torque/postgresql/arel/select_manager.rbs +15 -0
- data/sig/torque/postgresql/arel/visitors.rbs +30 -0
- data/sig/torque/postgresql/arel.rbs +6 -0
- data/sig/torque/postgresql/associations/association_scope.rbs +28 -0
- data/sig/torque/postgresql/associations/belongs_to_many_association.rbs +51 -0
- data/sig/torque/postgresql/associations/builder/belongs_to_many.rbs +24 -0
- data/sig/torque/postgresql/associations/builder/has_many.rbs +15 -0
- data/sig/torque/postgresql/associations/builder.rbs +8 -0
- data/sig/torque/postgresql/associations/foreign_association.rbs +16 -0
- data/sig/torque/postgresql/associations/join_dependency.rbs +16 -0
- data/sig/torque/postgresql/associations/preloader/association.rbs +32 -0
- data/sig/torque/postgresql/associations/preloader/loader_query.rbs +20 -0
- data/sig/torque/postgresql/associations/preloader.rbs +8 -0
- data/sig/torque/postgresql/associations.rbs +17 -0
- data/sig/torque/postgresql/attributes/base.rbs +37 -0
- data/sig/torque/postgresql/attributes/builder/enum.rbs +38 -0
- data/sig/torque/postgresql/attributes/builder/full_text_search.rbs +27 -0
- data/sig/torque/postgresql/attributes/builder/period.rbs +106 -0
- data/sig/torque/postgresql/attributes/builder.rbs +19 -0
- data/sig/torque/postgresql/attributes/composite.rbs +28 -0
- data/sig/torque/postgresql/attributes/enum.rbs +69 -0
- data/sig/torque/postgresql/attributes/enum_set.rbs +75 -0
- data/sig/torque/postgresql/attributes/full_text_search.rbs +13 -0
- data/sig/torque/postgresql/attributes/lazy.rbs +17 -0
- data/sig/torque/postgresql/attributes/lquery.rbs +48 -0
- data/sig/torque/postgresql/attributes/ltree.rbs +46 -0
- data/sig/torque/postgresql/attributes/period.rbs +13 -0
- data/sig/torque/postgresql/attributes/simple_enum.rbs +39 -0
- data/sig/torque/postgresql/attributes/struct.rbs +38 -0
- data/sig/torque/postgresql/attributes.rbs +6 -0
- data/sig/torque/postgresql/autosave_association.rbs +16 -0
- data/sig/torque/postgresql/auxiliary_statement/recursive.rbs +22 -0
- data/sig/torque/postgresql/auxiliary_statement/settings.rbs +63 -0
- data/sig/torque/postgresql/auxiliary_statement.rbs +57 -0
- data/sig/torque/postgresql/base.rbs +41 -0
- data/sig/torque/postgresql/collector.rbs +7 -0
- data/sig/torque/postgresql/config.rbs +9 -0
- data/sig/torque/postgresql/function.rbs +21 -0
- data/sig/torque/postgresql/geometry_builder.rbs +20 -0
- data/sig/torque/postgresql/i18n.rbs +15 -0
- data/sig/torque/postgresql/inheritance/expander.rbs +23 -0
- data/sig/torque/postgresql/inheritance/record.rbs +20 -0
- data/sig/torque/postgresql/inheritance.rbs +47 -0
- data/sig/torque/postgresql/insert_all.rbs +22 -0
- data/sig/torque/postgresql/migration/command_recorder.rbs +30 -0
- data/sig/torque/postgresql/migration.rbs +6 -0
- data/sig/torque/postgresql/predicate_builder/arel_attribute_handler.rbs +15 -0
- data/sig/torque/postgresql/predicate_builder/array_handler.rbs +26 -0
- data/sig/torque/postgresql/predicate_builder/composite_handler.rbs +26 -0
- data/sig/torque/postgresql/predicate_builder/enumerator_lazy_handler.rbs +18 -0
- data/sig/torque/postgresql/predicate_builder/ltree_handler.rbs +36 -0
- data/sig/torque/postgresql/predicate_builder/regexp_handler.rbs +16 -0
- data/sig/torque/postgresql/predicate_builder/struct_handler.rbs +24 -0
- data/sig/torque/postgresql/predicate_builder.rbs +23 -0
- data/sig/torque/postgresql/predicate_table.rbs +24 -0
- data/sig/torque/postgresql/railtie.rbs +10 -0
- data/sig/torque/postgresql/reflection/abstract_reflection.rbs +22 -0
- data/sig/torque/postgresql/reflection/association_reflection.rbs +18 -0
- data/sig/torque/postgresql/reflection/belongs_to_many_reflection.rbs +30 -0
- data/sig/torque/postgresql/reflection/has_many_reflection.rbs +14 -0
- data/sig/torque/postgresql/reflection/runtime_reflection.rbs +18 -0
- data/sig/torque/postgresql/reflection/through_reflection.rbs +14 -0
- data/sig/torque/postgresql/reflection.rbs +11 -0
- data/sig/torque/postgresql/relation/auxiliary_statement.rbs +29 -0
- data/sig/torque/postgresql/relation/buckets.rbs +35 -0
- data/sig/torque/postgresql/relation/cross_join.rbs +63 -0
- data/sig/torque/postgresql/relation/distinct_on.rbs +16 -0
- data/sig/torque/postgresql/relation/inheritance.rbs +48 -0
- data/sig/torque/postgresql/relation/join_series.rbs +28 -0
- data/sig/torque/postgresql/relation/merger.rbs +23 -0
- data/sig/torque/postgresql/relation/segments.rbs +27 -0
- data/sig/torque/postgresql/relation.rbs +48 -0
- data/sig/torque/postgresql/schema_cache/bound_schema_reflection.rbs +14 -0
- data/sig/torque/postgresql/schema_cache/inheritance.rbs +12 -0
- data/sig/torque/postgresql/schema_cache/schema_reflection.rbs +14 -0
- data/sig/torque/postgresql/schema_cache.rbs +43 -0
- data/sig/torque/postgresql/table_name.rbs +20 -0
- data/sig/torque/postgresql/validations.rbs +13 -0
- data/sig/torque/postgresql/version.rbs +5 -0
- data/sig/torque/postgresql/versioned_commands/command_migration.rbs +54 -0
- data/sig/torque/postgresql/versioned_commands/generator.rbs +17 -0
- data/sig/torque/postgresql/versioned_commands/migration_context.rbs +30 -0
- data/sig/torque/postgresql/versioned_commands/migrator.rbs +19 -0
- data/sig/torque/postgresql/versioned_commands/schema_table.rbs +23 -0
- data/sig/torque/postgresql/versioned_commands.rbs +25 -0
- data/sig/torque/postgresql.rbs +26 -0
- data/skills/torque-postgresql/SKILL.md +70 -0
- data/spec/fixtures/migrations/20250101000008_create_trigger_audit_users_v1.sql +3 -0
- data/spec/initialize.rb +9 -0
- data/spec/mocks/cache_query.rb +1 -1
- data/spec/rbs_helper.rb +8 -0
- data/spec/schema.rb +2 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/tests/arel_spec.rb +1 -3
- data/spec/tests/auxiliary_statement_spec.rb +12 -0
- data/spec/tests/buckets_spec.rb +122 -0
- data/spec/tests/composite_spec.rb +67 -0
- data/spec/tests/cross_join_spec.rb +185 -0
- data/spec/tests/distinct_on_spec.rb +5 -0
- data/spec/tests/enum_set_spec.rb +4 -0
- data/spec/tests/enum_spec.rb +20 -4
- data/spec/tests/geometric_builder_spec.rb +16 -5
- data/spec/tests/has_many_spec.rb +2 -1
- data/spec/tests/interval_spec.rb +6 -0
- data/spec/tests/ltree_spec.rb +398 -64
- data/spec/tests/predicate_builder_spec.rb +120 -0
- data/spec/tests/relation_spec.rb +25 -69
- data/spec/tests/segments_spec.rb +264 -0
- data/spec/tests/struct_spec.rb +202 -0
- data/spec/tests/table_inheritance_spec.rb +10 -0
- data/spec/tests/versioned_commands_spec.rb +145 -0
- 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,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,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
|