module RD3::DataProviders::Rdbms

Public Class Methods

_table() click to toggle source
# File lib/rd3/data_providers/rdbms.rb, line 55
def self._table
  self.client[self.table_name]
end
client() click to toggle source
# File lib/rd3/data_providers/rdbms.rb, line 10
def self.client
  return @client if @client

  yml_config = YAML.load(File.read("#{RD3.config.config_file_directory}/#{self.config_file_name}.yml"))[RD3.config.environment.to_s]
  yml_config = yml_config.symbolize_keys

  @client = Sequel.connect(yml_config)
end
delete(id, opts) click to toggle source
# File lib/rd3/data_providers/rdbms.rb, line 42
def self.delete(id, opts)
  logical_delete = unless opts[:logical_only].nil?
                     opts[:logical_only]
                   else
                     RD3.config.enable_logical_deletes
                   end
  if logical_delete
    self.save({:id => id, :active => false})
  else
    self._table.where('id = ?', id).delete
  end
end
find_by_key(key, opts={}) click to toggle source
# File lib/rd3/data_providers/rdbms.rb, line 29
def self.find_by_key(key, opts={})
  # logically deleted instances will return nil
  # if the key exists, but the active flag is false
  filter_logical_deletes = unless opts[:logical_only].nil?
                              opts[:logical_only]
                           else
                              RD3.config.enable_logical_deletes
                           end
  filter = {:id => key}
  filter.merge!(:active => filter_logical_deletes) if filter_logical_deletes
  self._table.where(filter).first
end
save(attributes) click to toggle source
# File lib/rd3/data_providers/rdbms.rb, line 19
def self.save(attributes)
  if id = attributes.delete(:id)
    self._table.where('id = ?', id).update(attributes)
  else
    id = self._table.insert(attributes)
  end

  id
end