Module: Upkeep::Runtime::RelationObserver
- Defined in:
- lib/upkeep/runtime.rb
Constant Summary collapse
- SUPPRESS_DEPENDENCY_KEY =
:upkeep_runtime_relation_dependency_suppressed
Class Method Summary collapse
Instance Method Summary collapse
- #delete_all ⇒ Object
- #exec_queries ⇒ Object
- #pluck(*column_names) ⇒ Object
- #to_a ⇒ Object
- #to_ary ⇒ Object
- #update_all(updates) ⇒ Object
Class Method Details
.dependency_tracking_suppressed? ⇒ Boolean
880 881 882 |
# File 'lib/upkeep/runtime.rb', line 880 def self.dependency_tracking_suppressed? Thread.current[SUPPRESS_DEPENDENCY_KEY] end |
.suppress_dependency_tracking ⇒ Object
872 873 874 875 876 877 878 |
# File 'lib/upkeep/runtime.rb', line 872 def self.suppress_dependency_tracking previous = Thread.current[SUPPRESS_DEPENDENCY_KEY] Thread.current[SUPPRESS_DEPENDENCY_KEY] = true yield ensure Thread.current[SUPPRESS_DEPENDENCY_KEY] = previous end |
Instance Method Details
#delete_all ⇒ Object
918 919 920 921 922 923 924 925 926 927 928 929 930 931 |
# File 'lib/upkeep/runtime.rb', line 918 def delete_all analysis = ActiveRecordQuery.analyze(self, opaque_table_policy: :allow_table) event = ChangeEvents.bulk_delete( table: klass.table_name, model: klass.name, changed_attributes: [klass.primary_key].compact, predicate_sql: analysis.sql, predicate_coverage: analysis.coverage.to_s, predicate_table_columns: analysis.table_columns, id: single_primary_key_predicate_value(analysis) ) super.tap { ChangeLog.record(event) } end |
#exec_queries ⇒ Object
884 885 886 887 |
# File 'lib/upkeep/runtime.rb', line 884 def exec_queries(...) analysis = relation_analysis_for_observation super.tap { |records| record_relation_provenance(records, analysis) } end |
#pluck(*column_names) ⇒ Object
897 898 899 900 |
# File 'lib/upkeep/runtime.rb', line 897 def pluck(*column_names) record_query_dependency(column_names) super end |
#to_a ⇒ Object
893 894 895 |
# File 'lib/upkeep/runtime.rb', line 893 def to_a to_ary end |
#to_ary ⇒ Object
889 890 891 |
# File 'lib/upkeep/runtime.rb', line 889 def to_ary super.tap { |records| record_relation_provenance(records, relation_analysis_for_observation) } end |
#update_all(updates) ⇒ Object
902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 |
# File 'lib/upkeep/runtime.rb', line 902 def update_all(updates) analysis = ActiveRecordQuery.analyze(self, opaque_table_policy: :allow_table) event = ChangeEvents.bulk_update( table: klass.table_name, model: klass.name, changed_attributes: update_columns(updates), predicate_sql: analysis.sql, predicate_coverage: analysis.coverage.to_s, predicate_table_columns: analysis.table_columns, new_values: update_values(updates), id: single_primary_key_predicate_value(analysis) ) super.tap { ChangeLog.record(event) } end |