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