Class: Dbwatcher::Services::DiagramStrategies::BaseDiagramStrategy
- Inherits:
-
Object
- Object
- Dbwatcher::Services::DiagramStrategies::BaseDiagramStrategy
- Includes:
- Logging
- Defined in:
- lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb
Overview
Abstract base class for diagram generation strategies
Defines the common interface and shared behavior for all diagram generation strategies. Subclasses must implement the render_diagram method.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#syntax_builder ⇒ Object
readonly
Returns the value of attribute syntax_builder.
Instance Method Summary collapse
-
#generate_from_dataset(dataset) ⇒ Hash
Generate diagram from standardized dataset.
-
#initialize(dependencies = {}) ⇒ BaseDiagramStrategy
constructor
Initialize strategy with dependencies.
-
#metadata ⇒ Hash
Get strategy metadata (abstract method).
Methods included from Logging
#debug_enabled?, #log_debug, #log_error, #log_info, #log_warn
Constructor Details
#initialize(dependencies = {}) ⇒ BaseDiagramStrategy
Initialize strategy with dependencies
20 21 22 23 |
# File 'lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb', line 20 def initialize(dependencies = {}) @syntax_builder = dependencies[:syntax_builder] || create_default_syntax_builder @logger = dependencies[:logger] || Rails.logger || Logger.new($stdout) end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
13 14 15 |
# File 'lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb', line 13 def logger @logger end |
#syntax_builder ⇒ Object (readonly)
Returns the value of attribute syntax_builder.
13 14 15 |
# File 'lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb', line 13 def syntax_builder @syntax_builder end |
Instance Method Details
#generate_from_dataset(dataset) ⇒ Hash
Generate diagram from standardized dataset
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb', line 29 def generate_from_dataset(dataset) log_info("Generating diagram from dataset with #{dataset.entities.size} entities and " \ "#{dataset.relationships.size} relationships") start_time = Time.current begin # Generate diagram using dataset result = render_diagram(dataset) log_operation_completion("diagram generation", Time.current - start_time, { entities_count: dataset.entities.size, relationships_count: dataset.relationships.size }) result rescue StandardError => e log_error("Diagram generation failed: #{e.class}: #{e.}\n#{e.backtrace.join("\n")}") error_response("Diagram generation failed: #{e.}") end end |
#metadata ⇒ Hash
Get strategy metadata (abstract method)
54 55 56 57 58 59 60 |
# File 'lib/dbwatcher/services/diagram_strategies/base_diagram_strategy.rb', line 54 def { name: strategy_name, description: strategy_description, mermaid_type: mermaid_diagram_type } end |