Sha256: 30d327df37d0516aa723fd50c3fc7a76d1f6615d6257344e464da79fa874e87d

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require 'legion/data/version'
require 'sequel'
require 'legion/data/connection'
require 'legion/data/migration'
require 'legion/data/model'

module Legion
  module Data
    def build(options = {})
      @connected = false
      options.merge!(default_options) { |_key, v1, _v2| v1 }
      @connection = connect(options[:connection]) if options[:connection][:auto_connect]
      return unless options[:connection][:auto_connect]

      migrate(@connection, options[:migration])
      model(options[:model]) if options[:model][:auto_load]
    end

    def connect(_options = {})
      Legion::Data::Connection.new
    end

    def migrate(connection, options = {})
      return false if options.key?(:auto_migrate) && options[:auto_migrate]

      Legion::Data::Migration.new(connection.database.connection)
    end

    def model(_options = {})
      Legion::Data::Models.new
    end

    def default_options
      { migration:  { auto_migrate: true },
        model:      { auto_load: true },
        connection: { auto_connect: true } }
    end

    def merge_options(options, default = default_options)
      options.merge!(default) { |_key, v1, _v2| v1 }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
legion-data-0.1.1 lib/legion/data.rb
legion-data-0.1.0 lib/legion/data.rb