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
820 821 822 |
# File 'lib/upkeep/runtime.rb', line 820 def self.dependency_tracking_suppressed? Thread.current[SUPPRESS_DEPENDENCY_KEY] end |
.suppress_dependency_tracking ⇒ Object
812 813 814 815 816 817 818 |
# File 'lib/upkeep/runtime.rb', line 812 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
857 858 859 860 861 862 863 864 865 866 867 868 869 |
# File 'lib/upkeep/runtime.rb', line 857 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 ) super.tap { ChangeLog.record(event) } end |
#exec_queries ⇒ Object
824 825 826 827 |
# File 'lib/upkeep/runtime.rb', line 824 def exec_queries(...) analysis = relation_analysis_for_observation super.tap { |records| record_relation_provenance(records, analysis) } end |
#pluck(*column_names) ⇒ Object
837 838 839 840 |
# File 'lib/upkeep/runtime.rb', line 837 def pluck(*column_names) record_query_dependency(column_names) super end |
#to_a ⇒ Object
833 834 835 |
# File 'lib/upkeep/runtime.rb', line 833 def to_a to_ary end |
#to_ary ⇒ Object
829 830 831 |
# File 'lib/upkeep/runtime.rb', line 829 def to_ary super.tap { |records| record_relation_provenance(records, relation_analysis_for_observation) } end |
#update_all(updates) ⇒ Object
842 843 844 845 846 847 848 849 850 851 852 853 854 855 |
# File 'lib/upkeep/runtime.rb', line 842 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) ) super.tap { ChangeLog.record(event) } end |