Class: Ink::MysqlAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/mysql_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ MysqlAdapter

Returns a new instance of MysqlAdapter.



5
6
7
8
9
10
# File 'lib/mysql_adapter.rb', line 5

def initialize(config)
  @type = config[:db_type]
  @db = Mysql.real_connect(config[:db_server],config[:db_user],
    config[:db_pass],config[:db_database])
  @db.reconnect = true
end

Instance Method Details

#closeObject



45
46
47
48
# File 'lib/mysql_adapter.rb', line 45

def close
  @db.close
  @db = nil
end

#primary_key_autoincrement(pk = "id") ⇒ Object



50
51
52
# File 'lib/mysql_adapter.rb', line 50

def primary_key_autoincrement(pk="id")
  ["`#{pk}`", "INTEGER", "PRIMARY KEY", "AUTO_INCREMENT"]
end

#query(query, type = Hash) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/mysql_adapter.rb', line 23

def query(query, type=Hash)
  type = Hash if not block_given?
  result = Array.new
  re = @db.method("query").call query
  if re
    keys = re.fetch_fields.map(&:name)
    re.each do |row|
      result.push type.new
      row.each_index do |i|
        k = keys[i]
        v = self.class.transform_from_sql(row[i])
        if block_given?
          yield(result[result.length-1], k, v)
        else
          result[result.length-1][k] = v
        end
      end
    end
  end
  return result
end

#tablesObject



12
13
14
15
16
17
18
19
20
21
# File 'lib/mysql_adapter.rb', line 12

def tables
  result = Array.new
  re = @db.query "show tables;"
  re.each do |row|
    row.each do |t|
      result.push t
    end
  end
  return result
end