Class: ROM::SQL::Repository

Inherits:
Repository
  • Object
show all
Defined in:
lib/rom/sql/repository.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#connect(uri, options) ⇒ Repository #connect(connection) ⇒ Repository

SQL repository interface

Examples:

repository = ROM::SQL::Repository.new('postgres://localhost/rom')

# or reuse connection
DB = Sequel.connect('postgres://localhost/rom')
repository = ROM::SQL::Repository.new(DB)

Overloads:

  • #connect(uri, options) ⇒ Repository

    Connects to database via uri passing options

    Parameters:

    • uri (String, Symbol)

      connection URI

    • options (Hash)

      connection options

  • #connect(connection) ⇒ Repository

    Re-uses connection instance

    Parameters:



51
52
53
54
# File 'lib/rom/sql/repository.rb', line 51

def initialize(uri, options = {})
  @connection = connect(uri, options)
  @schema = connection.tables
end

Instance Attribute Details

#loggerObject (readonly)

Return optionally configured logger

Returns:

  • (Object)

    logger



14
15
16
# File 'lib/rom/sql/repository.rb', line 14

def logger
  @logger
end

#schemaArray (readonly)

Returns a list of datasets inferred from table names

Returns:

  • (Array)

    array with table names



21
22
23
# File 'lib/rom/sql/repository.rb', line 21

def schema
  @schema
end

Class Method Details

.database_file?(scheme) ⇒ Boolean

Parameters:

  • scheme (String, Symbol)

Returns:

  • (Boolean)


26
27
28
# File 'lib/rom/sql/repository.rb', line 26

def self.database_file?(scheme)
  scheme.to_s.include?('sqlite')
end

Instance Method Details

#[](name) ⇒ Dataset

Return dataset with the given name

Parameters:

  • name (String)

    dataset name

Returns:

  • (Dataset)


70
71
72
# File 'lib/rom/sql/repository.rb', line 70

def [](name)
  connection[name]
end

#dataset(name) ⇒ Dataset

Return dataset with the given name

Parameters:

  • name (String)

    a dataset name

Returns:

  • (Dataset)


93
94
95
# File 'lib/rom/sql/repository.rb', line 93

def dataset(name)
  connection[name]
end

#dataset?(name) ⇒ Boolean

Check if dataset exists

Parameters:

  • name (String)

    dataset name

Returns:

  • (Boolean)


102
103
104
# File 'lib/rom/sql/repository.rb', line 102

def dataset?(name)
  schema.include?(name)
end

#disconnectObject

Disconnect from database



59
60
61
# File 'lib/rom/sql/repository.rb', line 59

def disconnect
  connection.disconnect
end

#extend_command_class(klass, dataset) ⇒ Object

Extend database-specific behavior

Note: Currently, only postgres is supported.

Parameters:

  • klass (Class)

    command class

  • dataset (Object)

    a dataset that will be used



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/rom/sql/repository.rb', line 114

def extend_command_class(klass, dataset)
  type = dataset.db.database_type

  if type == :postgres
    ext =
      if klass < Commands::Create
        Commands::Postgres::Create
      elsif klass < Commands::Update
        Commands::Postgres::Update
      end

    klass.send(:include, ext) if ext
  end

  klass
end

#use_logger(logger) ⇒ Object

Setup a logger

Parameters:

  • logger (Object)

See Also:

  • Sequel::Database#loggers


81
82
83
84
# File 'lib/rom/sql/repository.rb', line 81

def use_logger(logger)
  @logger = logger
  connection.loggers << logger
end