class Hypostasis::Namespace

Attributes

data_model[R]
name[R]

Public Class Methods

create(name, options = {}) click to toggle source
# File lib/hypostasis/namespace.rb, line 26
def self.create(name, options = {})
  raise Hypostasis::Errors::NamespaceAlreadyCreated unless database[name].nil?
  merged_options = { data_model: :key_value }.merge(options)

  database.transact do |tr|
    tr.set(name.to_s, 'true')
    tr.set(name.to_s + '\\' + Hypostasis::Tuple.new('config','data_model').to_s, merged_options[:data_model].to_s)
  end

  Hypostasis::Namespace.new(name, merged_options[:data_model])
end
new(name, data_model = :key_value) click to toggle source
# File lib/hypostasis/namespace.rb, line 4
def initialize(name, data_model = :key_value)
  @name = name.to_s
  @data_model = data_model.to_sym
  load_data_model
end
open(name) click to toggle source
# File lib/hypostasis/namespace.rb, line 38
def self.open(name)
  raise Hypostasis::Errors::NonExistentNamespace if database[name].nil?
  data_model = database.get(name + '\\' + Hypostasis::Tuple.new('config','data_model').to_s)
  raise Hypostasis::Errors::CanNotReadNamespaceConfig if data_model.nil?
  Hypostasis::Namespace.new(name, data_model)
end

Private Class Methods

database() click to toggle source
# File lib/hypostasis/namespace.rb, line 47
def self.database
  Hypostasis::Connection.database
end

Public Instance Methods

destroy() click to toggle source
# File lib/hypostasis/namespace.rb, line 17
def destroy
  database.clear_range_start_with(@name)
  true
end
open() click to toggle source
# File lib/hypostasis/namespace.rb, line 10
def open
  raise Hypostasis::Errors::NonExistentNamespace if database[name].nil?
  data_model = database.get(name + '\\' + Hypostasis::Tuple.new('config','data_model').to_s)
  raise Hypostasis::Errors::NamespaceDataModelMismatch if data_model != @data_model.to_s
  self
end
to_s() click to toggle source
# File lib/hypostasis/namespace.rb, line 22
def to_s
  @name
end

Private Instance Methods

database() click to toggle source
# File lib/hypostasis/namespace.rb, line 51
def database
  Hypostasis::Namespace.database
end
load_data_model() click to toggle source
# File lib/hypostasis/namespace.rb, line 55
def load_data_model
  case @data_model
    when :key_value
      self.extend Hypostasis::DataModels::KeyValue
    when :column_group
      self.extend Hypostasis::DataModels::ColumnGroup
    when :document
      self.extend Hypostasis::DataModels::Document
    else
      raise Hypostasis::Errors::UnknownNamespaceDataModel, "#{@data_model} unknown"
  end
end