class PGWrapper

Public Class Methods

new(db_uri) click to toggle source
# File lib/railz_lite/models/wrappers/pg_wrapper.rb, line 4
def initialize(db_uri)
  @db = PG::Connection.new(db_uri)
  @db.type_map_for_results = PG::BasicTypeMapForResults.new(@db) # converts pgsql strings to ruby type
  @db
end

Public Instance Methods

execute(sql, *args) click to toggle source
# File lib/railz_lite/models/wrappers/pg_wrapper.rb, line 10
def execute(sql, *args)
  converted_sql = convert_escaped_question_marks(sql)
  @db.exec_params(converted_sql, args).to_a
end
execute2(sql, *args) click to toggle source
# File lib/railz_lite/models/wrappers/pg_wrapper.rb, line 15
def execute2(sql, *args)
  converted_sql = convert_escaped_question_marks(sql)
  result = @db.exec_params(converted_sql, args) 
  [result.fields, result.to_a]
end
insert(sql, *args) click to toggle source
# File lib/railz_lite/models/wrappers/pg_wrapper.rb, line 21
def insert(sql, *args)
  sql.insert(sql.index(';'), ' RETURNING ID')
  converted_sql = convert_escaped_question_marks(sql)
  result = @db.exec_params(converted_sql, args)
  result.to_a.first['id']
end

Private Instance Methods

convert_escaped_question_marks(sql) click to toggle source

for pgsql, SELECT * FROM films WHERE x = ?; must be converted to SELECT * FROM films WHERE x = $1;

# File lib/railz_lite/models/wrappers/pg_wrapper.rb, line 32
def convert_escaped_question_marks(sql)
  converted_sql = ""
  index = 1
  sql.each_char do |char|
    if char == '?'
      converted_sql += "$#{index}"
      index += 1
    else
      converted_sql += char
    end
  end
  converted_sql
end