Class: MotionPrime::Store

Inherits:
Object
  • Object
show all
Defined in:
motion-prime/models/store.rb

Class Method Summary collapse

Class Method Details

.connect(type = nil) ⇒ Object



29
30
31
# File 'motion-prime/models/store.rb', line 29

def self.connect(type = nil)
  connect!(type) unless connected?
end

.connect!(type = nil) ⇒ Object



25
26
27
# File 'motion-prime/models/store.rb', line 25

def self.connect!(type = nil)
  self.shared_store = create(type)
end

.connected?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'motion-prime/models/store.rb', line 33

def self.connected?
  !!shared_store
end

.create(type = nil, path = nil) ⇒ Object

Raises:



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'motion-prime/models/store.rb', line 4

def self.create(type = nil, path = nil)
  error_ptr = Pointer.new(:id)
  case type || MotionPrime::Config.model.store_type.to_sym
  when :memory
    store = NSFNanoStore.createAndOpenStoreWithType(NSFMemoryStoreType, path: nil, error: error_ptr)
  when :temporary, :temp
    store = NSFNanoStore.createAndOpenStoreWithType(NSFTemporaryStoreType, path: nil, error: error_ptr)
  when :persistent, :file
    path ||= begin
      documents_path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0]
      documents_path + "/nano_#{Prime.env.to_s}.db"
    end
    store = NSFNanoStore.createAndOpenStoreWithType(NSFPersistentStoreType, path: path, error: error_ptr)
  else
    raise StoreError.new("unexpected store type (#{type}), must be one of: :memory, :temporary or :persistent")
  end

  raise StoreError, error_ptr[0].description if error_ptr[0]
  store
end

.debug=(debug) ⇒ Object



49
50
51
# File 'motion-prime/models/store.rb', line 49

def self.debug=(debug)
  NSFSetIsDebugOn(debug)
end

.disconnectObject



37
38
39
# File 'motion-prime/models/store.rb', line 37

def self.disconnect
  self.shared_store = nil
end

.shared_storeObject



41
42
43
# File 'motion-prime/models/store.rb', line 41

def self.shared_store
  @shared_store
end

.shared_store=(store) ⇒ Object



45
46
47
# File 'motion-prime/models/store.rb', line 45

def self.shared_store=(store)
  @shared_store = store
end