Class: RailsLens::Schema::Adapters::DatabaseInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_lens/schema/adapters/database_info.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ DatabaseInfo

Returns a new instance of DatabaseInfo.



9
10
11
12
# File 'lib/rails_lens/schema/adapters/database_info.rb', line 9

def initialize(connection)
  @connection = connection
  @adapter_name = connection.adapter_name
end

Instance Attribute Details

#adapter_nameObject (readonly)

Returns the value of attribute adapter_name.



7
8
9
# File 'lib/rails_lens/schema/adapters/database_info.rb', line 7

def adapter_name
  @adapter_name
end

#connectionObject (readonly)

Returns the value of attribute connection.



7
8
9
# File 'lib/rails_lens/schema/adapters/database_info.rb', line 7

def connection
  @connection
end

Instance Method Details

#generate_annotationObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rails_lens/schema/adapters/database_info.rb', line 14

def generate_annotation
  lines = []
  lines << '[database_info]'
  lines << "adapter = \"#{adapter_name}\""
  lines << "database = \"#{database_name}\""
  lines << "version = \"#{database_version}\""
  enc = database_encoding
  lines << "encoding = \"#{enc}\"" if enc
  coll = database_collation
  lines << "collation = \"#{coll}\"" if coll

  # Add extensions for PostgreSQL
  if adapter_name == 'PostgreSQL' && extensions.any?
    ext_list = extensions.map { |e| "{ name = \"#{e['name']}\", version = \"#{e['version']}\" }" }
    lines << "extensions = [#{ext_list.join(', ')}]"
  end

  # Add schemas for PostgreSQL
  if adapter_name == 'PostgreSQL' && schemas.any?
    lines << "schemas = #{TomlFormat.quoted_array(schemas)}"
  end

  lines.join("\n")
end