Module: SQLite3::Record

Defined in:
lib/sqlite3/record.rb

Overview

manage SQLite3::Records

The SQLite3::Record module is able to generate classes that are optimized for a specific set of columns. It is build on top of Struct, which is way faster than Hashes, for example.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.for_columns(columns) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/sqlite3/record.rb', line 52

def self.for_columns(columns)
  columns = columns.map(&:to_sym)

  @@classes ||= {}
  @@classes[columns] ||= begin
    struct = Struct.new(*columns)
    struct.extend SQLite3::Record::ClassMethods
    struct.include SQLite3::Record

    struct.columns = columns
    struct
  end
end

Instance Method Details

#to_aObject



40
41
42
# File 'lib/sqlite3/record.rb', line 40

def to_a
  self.class.columns.map do |column| send(column) end
end

#to_hashObject



44
45
46
47
48
49
50
# File 'lib/sqlite3/record.rb', line 44

def to_hash
  kvs = self.class.columns.inject([]) do |ary, column|
    ary << column << send(column)
  end

  Hash[*kvs]
end