class TGauge::DBConnection

Public Class Methods

app_name() click to toggle source
# File lib/db/db_connection.rb, line 10
def self.app_name
  YAML.load_file(Dir.pwd + '/config/database.yml')['database']
end
execute(*args) click to toggle source
# File lib/db/db_connection.rb, line 49
def self.execute(*args)
  args.flatten!

  print_query(*args)
  query = self.number_placeholders(args.unshift[0])
  params = args[1..-1]
  params.flatten!
  instance.exec(query, params)
end
instance() click to toggle source
# File lib/db/db_connection.rb, line 43
def self.instance
  open if @postgres.nil?

  @postgres
end
migrate() click to toggle source
# File lib/db/db_connection.rb, line 25
    def self.migrate
      ensure_migrations_table

      MIGRATION_FILES.each do |file|
        filename = file.match(/([\w|-]*)\.sql$/)[1]

        unless migrated_files.include?(filename)
          instance.exec(File.read(file))
          instance.exec(<<-SQL)
            INSERT INTO
              migrations (filename)
            VALUES
              ('#{filename}')
            SQL
        end
      end
    end
open() click to toggle source
# File lib/db/db_connection.rb, line 14
def self.open
  @postgres = PG::Connection.new(
    dbname: app_name,
    port: 5432
  )
end
reset() click to toggle source
# File lib/db/db_connection.rb, line 21
def self.reset
  self.instance
end

Private Class Methods

ensure_migrations_table() click to toggle source
# File lib/db/db_connection.rb, line 73
    def self.ensure_migrations_table
      table = instance.exec(<<-SQL)
        SELECT to_regclass('migrations') AS exists
      SQL

      unless table[0]['exists']
        instance.exec(<<-SQL)
          CREATE TABLE migrations(
            id SERIAL PRIMARY KEY,
            filename VARCHAR(255) NOT NULL
          )
        SQL
      end
    end
migrated_files() click to toggle source
# File lib/db/db_connection.rb, line 88
    def self.migrated_files
      Set.new instance.exec(<<-SQL).values.flatten
        SELECT
          filename
        FROM
          migrations
      SQL
    end
number_placeholders(query_string) click to toggle source
# File lib/db/db_connection.rb, line 61
def self.number_placeholders(query_string)
  count = 0
  query_string.chars.map do |char|
    if char == "?"
      count += 1
      "$#{count}"
    else
      char
    end
  end.join("")
end
print_query(query, *interpolation_args) click to toggle source