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
944 945 946 |
# File 'lib/upkeep/runtime.rb', line 944 def self.dependency_tracking_suppressed? Thread.current[SUPPRESS_DEPENDENCY_KEY] end |
.suppress_dependency_tracking ⇒ Object
936 937 938 939 940 941 942 |
# File 'lib/upkeep/runtime.rb', line 936 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
989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 |
# File 'lib/upkeep/runtime.rb', line 989 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
948 949 950 951 952 953 954 |
# File 'lib/upkeep/runtime.rb', line 948 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
968 969 970 971 |
# File 'lib/upkeep/runtime.rb', line 968 def pluck(*column_names) record_query_dependency(column_names) super end |
#to_a ⇒ Object
964 965 966 |
# File 'lib/upkeep/runtime.rb', line 964 def to_a to_ary end |
#to_ary ⇒ Object
956 957 958 959 960 961 962 |
# File 'lib/upkeep/runtime.rb', line 956 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
973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'lib/upkeep/runtime.rb', line 973 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 |