Class: Taggata::Db

Inherits:
Object
  • Object
show all
Defined in:
lib/taggata/db.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db_path, adapter_class) ⇒ Db

Returns a new instance of Db.



6
7
8
9
10
# File 'lib/taggata/db.rb', line 6

def initialize(db_path, adapter_class)
  @adapter = adapter_class.new
  @adapter.initialize_db db_path
  @adapter.migrate_db
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



4
5
6
# File 'lib/taggata/db.rb', line 4

def adapter
  @adapter
end

Instance Method Details

#bulk_insert(klass, values) ⇒ Object



32
33
34
# File 'lib/taggata/db.rb', line 32

def bulk_insert(klass, values)
  adapter.bulk_insert(klass, values)
end

#destroy(klass, options) ⇒ Object



28
29
30
# File 'lib/taggata/db.rb', line 28

def destroy(klass, options)
  adapter.destroy(klass, options)
end

#find(klass, options = {}) ⇒ Object



36
37
38
39
40
# File 'lib/taggata/db.rb', line 36

def find(klass, options = {})
  adapter.find(klass, options).map do |hash|
    klass.new_from_hash self, hash
  end
end

#find_child_directories(directory) ⇒ Object



66
67
68
69
70
# File 'lib/taggata/db.rb', line 66

def find_child_directories(directory)
  adapter.find(Persistent::Directory, :parent_id => directory.id).map do |hash|
    Persistent::Directory.new_from_hash(self, hash)
  end
end

#find_child_files(directory) ⇒ Object



72
73
74
75
76
# File 'lib/taggata/db.rb', line 72

def find_child_files(directory)
  adapter.find(Persistent::File, :parent_id => directory.id) do |hash|
    Persistent::File.new_from_hash(self, hash)
  end
end

#find_one(klass, options = {}) ⇒ Object



42
43
44
45
# File 'lib/taggata/db.rb', line 42

def find_one(klass, options = {})
  record = adapter.find_one(klass, options)
  klass.new_from_hash(self, record) unless record.nil?
end

#find_or_create(klass, options) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/taggata/db.rb', line 51

def find_or_create(klass, options)
  search = adapter.find_one(klass, options)
  if search.nil?
    o = klass.new_from_hash self, options
    o.save
    o
  else
    klass.new_from_hash self, search
  end
end

#find_tags_without_filesObject



24
25
26
# File 'lib/taggata/db.rb', line 24

def find_tags_without_files
  adapter.find_tags_without_files.map { |hash| Persistent::Tag.new_from_hash self, hash }
end

#find_untagged_filesObject



20
21
22
# File 'lib/taggata/db.rb', line 20

def find_untagged_files
  adapter.find_untagged_files.map { |hash| Persistent::File.new_from_hash self, hash }
end

#load(klass, id) ⇒ Object



47
48
49
# File 'lib/taggata/db.rb', line 47

def load(klass, id)
  klass.new_from_hash(adapter.load(klass, id))
end

#save(object) ⇒ Object



62
63
64
# File 'lib/taggata/db.rb', line 62

def save(object)
  adapter.save(object.class.table, object.to_hash)
end

#transaction(&block) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/taggata/db.rb', line 12

def transaction(&block)
  if block_given?
    adapter.transaction(block)
  else
    raise "Cannot initiate transaction without block."
  end
end