module ORMakers::Model::ClassMethods

Class methods

Public Instance Methods

all() click to toggle source
# File lib/ormakers/model.rb, line 54
def all
  results = Database.query("SELECT * FROM #{self.name.snake_case}s;")
  results.map { |result| new(result) }
end
create(attributes = {}) click to toggle source
# File lib/ormakers/model.rb, line 40
def create(attributes = {})
  attr_keys = attributes.keys.map(&:to_s).join(', ')
  attr_values = attributes.values.map { |val| "'#{val}'" }.join(', ')
  id = Database.query("INSERT INTO #{name.snake_case}s (#{attr_keys}) VALUES (#{attr_values}) returning *;").first['id']
  attributes['id'] = id
  new(attributes)
end
get(id) click to toggle source
# File lib/ormakers/model.rb, line 59
def get(id)
  result = Database.query("SELECT * FROM #{self.name.snake_case}s WHERE id='#{id}';").first
  new(result)
end
property(name, type) click to toggle source
# File lib/ormakers/model.rb, line 48
def property(name, type)
  Database.query("ALTER TABLE #{self.name.snake_case}s ADD #{name} #{Database::DATA_TYPES[type]};")
rescue PG::DuplicateColumn
  'Property column already exists'
end