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
907 908 909 |
# File 'lib/upkeep/runtime.rb', line 907 def self.dependency_tracking_suppressed? Thread.current[SUPPRESS_DEPENDENCY_KEY] end |
.suppress_dependency_tracking ⇒ Object
899 900 901 902 903 904 905 |
# File 'lib/upkeep/runtime.rb', line 899 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
952 953 954 955 956 957 958 959 960 961 962 963 964 965 |
# File 'lib/upkeep/runtime.rb', line 952 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
911 912 913 914 915 916 917 |
# File 'lib/upkeep/runtime.rb', line 911 def exec_queries(...) analysis = relation_analysis_for_observation super.tap do |records| record_relation_provenance(records, analysis) record_relation_dependency(analysis) end end |
#pluck(*column_names) ⇒ Object
931 932 933 934 |
# File 'lib/upkeep/runtime.rb', line 931 def pluck(*column_names) record_query_dependency(column_names) super end |
#to_a ⇒ Object
927 928 929 |
# File 'lib/upkeep/runtime.rb', line 927 def to_a to_ary end |
#to_ary ⇒ Object
919 920 921 922 923 924 925 |
# File 'lib/upkeep/runtime.rb', line 919 def to_ary analysis = relation_analysis_for_observation super.tap do |records| record_relation_provenance(records, analysis) record_relation_dependency(analysis) end end |
#update_all(updates) ⇒ Object
936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 |
# File 'lib/upkeep/runtime.rb', line 936 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 |