Class: SqlGenius::Core::ServerInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/sql_genius/core/server_info.rb

Overview

Identifies the database vendor and version. Adapters construct one from the server’s VERSION() output.

Three vendors are recognised: :mysql, :mariadb, :postgresql. #dialect collapses these into the SQL family used by query builders — :mysql (covering both MySQL and MariaDB) or :postgresql.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vendor:, version:) ⇒ ServerInfo

vendor must be :mysql, :mariadb, or :postgresql



29
30
31
32
33
# File 'lib/sql_genius/core/server_info.rb', line 29

def initialize(vendor:, version:)
  @vendor = vendor
  @version = version
  freeze
end

Instance Attribute Details

#vendorObject (readonly)

Returns the value of attribute vendor.



12
13
14
# File 'lib/sql_genius/core/server_info.rb', line 12

def vendor
  @vendor
end

#versionObject (readonly)

Returns the value of attribute version.



12
13
14
# File 'lib/sql_genius/core/server_info.rb', line 12

def version
  @version
end

Class Method Details

.parse(version_string) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sql_genius/core/server_info.rb', line 15

def parse(version_string)
  str = version_string.to_s
  vendor = if str.match?(/postgresql/i)
    :postgresql
  elsif str.downcase.include?("mariadb")
    :mariadb
  else
    :mysql
  end
  new(vendor: vendor, version: str)
end

Instance Method Details

#dialectObject

SQL family used to pick a query builder. MySQL and MariaDB share one dialect; PostgreSQL is its own.



49
50
51
# File 'lib/sql_genius/core/server_info.rb', line 49

def dialect
  postgresql? ? :postgresql : :mysql
end

#mariadb?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/sql_genius/core/server_info.rb', line 35

def mariadb?
  @vendor == :mariadb
end

#mysql?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/sql_genius/core/server_info.rb', line 39

def mysql?
  @vendor == :mysql
end

#postgresql?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/sql_genius/core/server_info.rb', line 43

def postgresql?
  @vendor == :postgresql
end