Class: Dbwatcher::Services::DiagramAnalyzers::BaseAnalyzer
- Inherits:
-
BaseService
- Object
- BaseService
- Dbwatcher::Services::DiagramAnalyzers::BaseAnalyzer
- Defined in:
- lib/dbwatcher/services/diagram_analyzers/base_analyzer.rb
Overview
Abstract base class for diagram analyzers
This class provides a standard interface that all diagram analyzers must implement to ensure consistent data flow and transformation to Dataset format.
Direct Known Subclasses
ForeignKeyAnalyzer, InferredRelationshipAnalyzer, ModelAssociationAnalyzer
Instance Method Summary collapse
-
#analyze(context) ⇒ Object
Standard interface that all analyzers must implement.
-
#analyzer_type ⇒ String
Get analyzer type classification.
-
#call ⇒ DiagramData::Dataset
Main entry point - analyze and transform.
-
#transform_to_dataset(raw_data) ⇒ DiagramData::Dataset
Transform raw data to standard Dataset.
Methods inherited from BaseService
Methods included from Logging
#debug_enabled?, #log_debug, #log_error, #log_info, #log_warn
Constructor Details
This class inherits a constructor from Dbwatcher::Services::BaseService
Instance Method Details
#analyze(context) ⇒ Object
Standard interface that all analyzers must implement
33 34 35 |
# File 'lib/dbwatcher/services/diagram_analyzers/base_analyzer.rb', line 33 def analyze(context) raise NotImplementedError, "Subclasses must implement analyze method" end |
#analyzer_type ⇒ String
Get analyzer type classification
50 51 52 |
# File 'lib/dbwatcher/services/diagram_analyzers/base_analyzer.rb', line 50 def analyzer_type raise NotImplementedError, "Subclasses must implement analyzer_type" end |
#call ⇒ DiagramData::Dataset
Main entry point - analyze and transform
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/dbwatcher/services/diagram_analyzers/base_analyzer.rb', line 57 def call log_service_start "Starting #{self.class.name}", analysis_context start_time = Time.current begin # Perform analysis raw_data = analyze(analysis_context) # Transform to standard format dataset = transform_to_dataset(raw_data) # Validate result unless dataset.is_a?(Dbwatcher::Services::DiagramData::Dataset) raise StandardError, "transform_to_dataset must return a Dataset instance" end unless dataset.valid? Rails.logger.warn "#{self.class.name}: Generated invalid dataset: #{dataset.validation_errors.join(", ")}" end log_service_completion(start_time, { entities_count: dataset.entities.size, relationships_count: dataset.relationships.size, dataset_valid: dataset.valid? }) dataset rescue StandardError => e Rails.logger.error "#{self.class.name} error: #{e.class}: #{e.}\n#{e.backtrace.join("\n")}" # Return empty dataset instead of failing create_empty_dataset end end |
#transform_to_dataset(raw_data) ⇒ DiagramData::Dataset
Transform raw data to standard Dataset
42 43 44 |
# File 'lib/dbwatcher/services/diagram_analyzers/base_analyzer.rb', line 42 def transform_to_dataset(raw_data) raise NotImplementedError, "Subclasses must implement transform_to_dataset" end |