Class: RepositoryStorage

Inherits:
Object
  • Object
show all
Includes:
DataMapper::Resource
Defined in:
lib/dm-cutie/models/repository_storage.rb

Overview

Storage information for a particular model & repository This table is a denormalized combination of Repositories and Models

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_make(r, a, s, m) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dm-cutie/models/repository_storage.rb', line 24

def RepositoryStorage.find_or_make(r,a,s,m)
  _signature = RepositoryStorage.names_to_signature(r,a,s,m)
  
  _rs = RepositoryStorage.first(:signature => _signature) || RepositoryStorage.new

  if _rs.new?
    _rs.signature     = _signature
    _rs.repo_name     = r
    _rs.adapter_name  = a
    _rs.storage_name  = s
    _rs.model_name    = m
    _rs.save
  end
  _rs
end

.names_to_signature(r, a, s, m) ⇒ Object



64
65
66
# File 'lib/dm-cutie/models/repository_storage.rb', line 64

def RepositoryStorage.names_to_signature(r,a,s,m)
  Digest::SHA1.hexdigest("#{r}>#{a}>#{s}>#{m}")
end

Instance Method Details

#count_operation(op) ⇒ Object



40
41
42
# File 'lib/dm-cutie/models/repository_storage.rb', line 40

def count_operation(op)
  GeneralizedQuery.all(GeneralizedQuery.query_storage_links.repository_storage.id => self.id, :operation => op).length
end

#read_to_write_ratioObject



56
57
58
# File 'lib/dm-cutie/models/repository_storage.rb', line 56

def read_to_write_ratio
  "#{total_selects}:#{total_inserts+total_deletes+total_updates}"
end

#total_deletesObject



50
51
52
# File 'lib/dm-cutie/models/repository_storage.rb', line 50

def total_deletes
  @total_deletes ||= count_operation(:delete)
end

#total_insertsObject



47
48
49
# File 'lib/dm-cutie/models/repository_storage.rb', line 47

def total_inserts
  @total_inserts ||= count_operation(:insert)
end

#total_selectsObject



44
45
46
# File 'lib/dm-cutie/models/repository_storage.rb', line 44

def total_selects
  @total_selects ||= count_operation(:select)
end

#total_updatesObject



53
54
55
# File 'lib/dm-cutie/models/repository_storage.rb', line 53

def total_updates
  @total_updates ||= count_operation(:update)
end