Class: SqlGenius::Core::ServerInfo
- Inherits:
-
Object
- Object
- SqlGenius::Core::ServerInfo
- 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
-
#vendor ⇒ Object
readonly
Returns the value of attribute vendor.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Class Method Summary collapse
Instance Method Summary collapse
-
#dialect ⇒ Object
SQL family used to pick a query builder.
-
#initialize(vendor:, version:) ⇒ ServerInfo
constructor
vendor must be :mysql, :mariadb, or :postgresql.
- #mariadb? ⇒ Boolean
- #mysql? ⇒ Boolean
- #postgresql? ⇒ Boolean
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
#vendor ⇒ Object (readonly)
Returns the value of attribute vendor.
12 13 14 |
# File 'lib/sql_genius/core/server_info.rb', line 12 def vendor @vendor end |
#version ⇒ Object (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
#dialect ⇒ Object
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
35 36 37 |
# File 'lib/sql_genius/core/server_info.rb', line 35 def mariadb? @vendor == :mariadb end |
#mysql? ⇒ Boolean
39 40 41 |
# File 'lib/sql_genius/core/server_info.rb', line 39 def mysql? @vendor == :mysql end |
#postgresql? ⇒ Boolean
43 44 45 |
# File 'lib/sql_genius/core/server_info.rb', line 43 def postgresql? @vendor == :postgresql end |