module Mimi::DB

Constants

Model

NOTE: this is the way to create an abstract class that inherits from Sequel::Model

VERSION

Public Class Methods

configure(*) click to toggle source
Calls superclass method
# File lib/mimi/db.rb, line 62
def self.configure(*)
  super
  if Mimi.const_defined?(:Application)
    @logger = Mimi::Application.logger
  end
end
connection() click to toggle source

Returns active DB connection

@return [Sequel::<…>::Database]

# File lib/mimi/db.rb, line 77
def self.connection
  @connection
end
logger() click to toggle source
# File lib/mimi/db.rb, line 69
def self.logger
  @logger ||= Mimi::Logger.new
end
module_manifest() click to toggle source
# File lib/mimi/db.rb, line 25
def self.module_manifest
  {
    db_adapter: {
      desc: 'Database adapter ("sqlite3", "postgresql", "mysql", "cockroachdb" etc)',
      default: 'sqlite3'
    },
    db_database: {
      desc: 'Database name (e.g. "tmp/mydb")',
      # required
    },
    db_host: {
      desc: 'Database host',
      default: nil
    },
    db_port: {
      desc: 'Database port',
      default: nil
    },
    db_username: {
      desc: 'Database username',
      default: nil
    },
    db_password: {
      desc: 'Database password',
      default: nil
    },
    db_pool: {
      desc: 'Database connection pool size',
      default: 15
    },
    db_log_level: {
      desc: 'Logging level for database layer ("debug", "info" etc)',
      default: 'debug'
    }
  }
end
module_path() click to toggle source
# File lib/mimi/db.rb, line 21
def self.module_path
  Pathname.new(__dir__).join('..').join('..').expand_path
end
sequel_config() click to toggle source

Returns Sequel connection parameters

@return [Hash]

# File lib/mimi/db.rb, line 113
def self.sequel_config
  {
    adapter: sequel_config_canonical_adapter_name(module_options[:db_adapter]),
    database: module_options[:db_database],
    host: module_options[:db_host],
    port: module_options[:db_port],
    user: module_options[:db_username],
    password: module_options[:db_password],
    encoding: module_options[:db_encoding],
    max_connections: module_options[:db_pool],
    sql_log_level: module_options[:db_log_level],
    logger: logger
  }
end
sequel_config_canonical_adapter_name(adapter_name) click to toggle source

Returns a standard Sequel adapter name converted from any variation of adapter names.

@example

sequel_config_canonical_adapter_name(:sqlite3) # => 'sqlite'

@param adapter_name [String,Symbol] @return [String]

# File lib/mimi/db.rb, line 96
def self.sequel_config_canonical_adapter_name(adapter_name)
  case adapter_name.to_s.downcase
  when 'sqlite', 'sqlite3'
    'sqlite'
  when 'postgres', 'postgresql'
    'postgres'
  when 'cockroach', 'cockroachdb'
    'cockroachdb'
  else
    adapter_name.to_s.downcase
  end
end
start() click to toggle source
Calls superclass method
# File lib/mimi/db.rb, line 81
def self.start
  Mimi::DB::Extensions.start
  @connection = Sequel.connect(sequel_config)
  Mimi.require_files(module_options[:require_files]) if module_options[:require_files]
  super
end