Class: Dbwatcher::Services::DiagramGenerator

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/dbwatcher/services/diagram_generator.rb

Overview

Service for generating diagrams from session data

Coordinates the process of generating diagrams by:

  1. Loading session data

  2. Using appropriate analyzers to extract relationships

  3. Applying diagram generation strategies

Examples:

generator = DiagramGenerator.new(session_id: "abc123", diagram_type: "database_tables")
result = generator.call
# => { success: true, content: "erDiagram\n...", type: "erDiagram" }

Instance Method Summary collapse

Methods included from Logging

#debug_enabled?, #log_debug, #log_error, #log_info, #log_warn

Constructor Details

#initialize(session_id:, diagram_type:, options: {}) ⇒ DiagramGenerator

Initialize generator with options

Parameters:

  • session_id (String)

    session ID to analyze

  • diagram_type (String)

    type of diagram to generate

  • options (Hash) (defaults to: {})

    additional options



27
28
29
30
31
32
33
# File 'lib/dbwatcher/services/diagram_generator.rb', line 27

def initialize(session_id:, diagram_type:, options: {})
  @session_id = session_id
  @diagram_type = diagram_type
  @options = options
  @registry = options[:registry] || DiagramTypeRegistry.new
  @logger = options[:logger] || Rails.logger
end

Instance Method Details

#callHash

Generate diagram

Returns:

  • (Hash)

    diagram generation result



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/dbwatcher/services/diagram_generator.rb', line 38

def call
  log_info("Generating diagram of type #{@diagram_type} for session #{@session_id}")

  start_time = Time.now
  result = generate_diagram

  duration_ms = ((Time.now - start_time) * 1000).round(2)
  log_info("Diagram generation completed in #{duration_ms}ms", {
             session_id: @session_id,
             diagram_type: @diagram_type,
             success: result[:success]
           })

  result
rescue StandardError => e
  log_error("Diagram generation failed: #{e.message}", error_context)
  error_result("Diagram generation failed: #{e.message}")
end