Class: Dbwatcher::Services::MermaidSyntax::CardinalityMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/dbwatcher/services/mermaid_syntax/cardinality_mapper.rb

Overview

Maps relationship cardinality to Mermaid syntax

Provides mapping from internal cardinality representation to specific Mermaid diagram syntax for different diagram types.

Examples:

CardinalityMapper.to_erd("one_to_many") # => "||--o{"
CardinalityMapper.to_class("one_to_many") # => "1..*"
CardinalityMapper.to_simple("one_to_many") # => "1:N"

Constant Summary collapse

DEFAULT_ERD =

Default cardinality notation

"||--o{"
DEFAULT_CLASS =

Default to one-to-many

"1..*"
DEFAULT_SIMPLE =

Default to one-to-many

"1:N"
ERD_NOTATIONS =

Lookup tables for different cardinality notations

{
  "one_to_many" => "||--o{",
  "one_to_zero_or_many" => "||--o{",
  "many_to_one" => "}o--||",
  "one_to_one" => "||--||",
  "many_to_many" => "}o--o{",
  "zero_or_one_to_many" => "|o--o{",
  "zero_or_one_to_one" => "|o--||",
  "one_to_zero_or_one" => "||--|o"
}.freeze
CLASS_NOTATIONS =
{
  "one_to_many" => "1..*",
  "many_to_one" => "*..*",
  "many_to_many" => "*..*",
  "one_to_one" => "1..1",
  "zero_or_one_to_many" => "0..1..*",
  "one_to_zero_or_many" => "1..0..*",
  "zero_or_one_to_one" => "0..1..1",
  "one_to_zero_or_one" => "1..0..1"
}.freeze
SIMPLE_NOTATIONS =
{
  "one_to_many" => "1:N",
  "many_to_one" => "N:1",
  "one_to_one" => "1:1",
  "many_to_many" => "N:N",
  "zero_or_one_to_many" => "0,1:N",
  "one_to_zero_or_many" => "1:0,N",
  "zero_or_one_to_one" => "0,1:1",
  "one_to_zero_or_one" => "1:0,1"
}.freeze

Class Method Summary collapse

Class Method Details

.to_class(cardinality, format = :standard) ⇒ String

Map cardinality to class diagram syntax

Parameters:

  • cardinality (String, Symbol)

    internal cardinality representation

  • format (Symbol) (defaults to: :standard)

    cardinality format (:standard or :simple)

Returns:

  • (String)

    class diagram cardinality notation



72
73
74
75
76
# File 'lib/dbwatcher/services/mermaid_syntax/cardinality_mapper.rb', line 72

def to_class(cardinality, format = :standard)
  return to_simple(cardinality) if format == :simple

  CLASS_NOTATIONS[cardinality.to_s] || DEFAULT_CLASS
end

.to_erd(cardinality, _format = :standard) ⇒ String

Map cardinality to ERD diagram syntax

Parameters:

  • cardinality (String, Symbol)

    internal cardinality representation

  • _format (Symbol) (defaults to: :standard)

    cardinality format (not used for ERD)

Returns:

  • (String)

    ERD cardinality notation



61
62
63
64
65
# File 'lib/dbwatcher/services/mermaid_syntax/cardinality_mapper.rb', line 61

def to_erd(cardinality, _format = :standard)
  # ERD format doesn't change based on format parameter
  # It always uses the standard Mermaid ERD notation
  ERD_NOTATIONS[cardinality.to_s] || DEFAULT_ERD
end

.to_simple(cardinality, _format = :standard) ⇒ String

Map cardinality to simple text format

Parameters:

  • cardinality (String, Symbol)

    internal cardinality representation

  • _format (Symbol) (defaults to: :standard)

    cardinality format (not used for simple format)

Returns:

  • (String)

    simple cardinality notation



83
84
85
# File 'lib/dbwatcher/services/mermaid_syntax/cardinality_mapper.rb', line 83

def to_simple(cardinality, _format = :standard)
  SIMPLE_NOTATIONS[cardinality.to_s] || DEFAULT_SIMPLE
end