class Regres::Table

Public Class Methods

new(connection, name) click to toggle source
# File lib/regres/table.rb, line 3
def initialize(connection, name)
  @connection = connection
  @name = name[/^[\w\_\-]+/]

  create unless exists?
end

Public Instance Methods

create() click to toggle source
# File lib/regres/table.rb, line 10
def create
  @connection.query(%{
    CREATE TABLE #{@name} (k varchar(255) primary key, v text, unique (k))
  })
end
del(k) click to toggle source
# File lib/regres/table.rb, line 39
def del(k)
  @connection.query(%{DELETE FROM #{@name} WHERE k = $1}, [k])
  true
end
exists?() click to toggle source
# File lib/regres/table.rb, line 16
def exists?
  res = @connection.query(%{SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = $1)}, [@name])

  res.first == {"exists" => "t"}
end
get(k) click to toggle source
# File lib/regres/table.rb, line 31
def get(k)
  res = @connection.query(%{
    SELECT v FROM #{@name} WHERE k = $1
    }, [k]).first

  res && res['v']
end
set(k, v) click to toggle source
# File lib/regres/table.rb, line 22
def set(k, v)
  @connection.query(%{
    INSERT INTO #{@name} (k, v) VALUES ($1, $2)
    ON CONFLICT (k) DO UPDATE SET v = $2 WHERE #{@name}.k = $1
    }, [k, v])

  v
end