Class: Moe::TableManager
- Inherits:
-
Object
- Object
- Moe::TableManager
- Defined in:
- lib/moe/table_manager.rb
Instance Attribute Summary collapse
-
#date ⇒ Object
readonly
Returns the value of attribute date.
-
#dyna ⇒ Object
Returns the value of attribute dyna.
-
#meta ⇒ Object
Returns the value of attribute meta.
Instance Method Summary collapse
- #build(model, copies = 1, hash_key = "hash", range_key = nil, read_capacity = 5, write_capacity = 10, read_tables = []) ⇒ Object
- #increment(model) ⇒ Object
-
#initialize ⇒ TableManager
constructor
A new instance of TableManager.
- #load_metadata(model) ⇒ Object
- #load_table(table_name) ⇒ Object
- #meta_table_name ⇒ Object
- #meta_table_names ⇒ Object
- #table_name(model) ⇒ Object
- #update_metadata(model, payload) ⇒ Object
Constructor Details
#initialize ⇒ TableManager
Returns a new instance of TableManager.
6 7 8 9 10 |
# File 'lib/moe/table_manager.rb', line 6 def initialize @date = Time.now.strftime("%F") @dyna = Dyna.new @meta = dyna.find(.first) || dyna.create_table(, 2) end |
Instance Attribute Details
#date ⇒ Object (readonly)
Returns the value of attribute date.
3 4 5 |
# File 'lib/moe/table_manager.rb', line 3 def date @date end |
#dyna ⇒ Object
Returns the value of attribute dyna.
4 5 6 |
# File 'lib/moe/table_manager.rb', line 4 def dyna @dyna end |
#meta ⇒ Object
Returns the value of attribute meta.
4 5 6 |
# File 'lib/moe/table_manager.rb', line 4 def @meta end |
Instance Method Details
#build(model, copies = 1, hash_key = "hash", range_key = nil, read_capacity = 5, write_capacity = 10, read_tables = []) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/moe/table_manager.rb', line 12 def build(model, copies=1, hash_key="hash", range_key=nil, read_capacity=5, write_capacity=10, read_tables=[]) write_tables = dyna.create_table table_name(model), copies, hash_key, range_key, read_capacity, write_capacity = { read_tables: read_tables << write_tables.first, write_tables: write_tables } model, [ read_tables, write_tables ] end |
#increment(model) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/moe/table_manager.rb', line 30 def increment(model) = model table = load_table [:write_tables].first if table[:table_name].include? date raise "Moe sez: Cannot increment twice on the same day!" end build model, [:write_tables].size, table[:key][:hash], table[:key][:range], table[:read_capacity], table[:write_capacity], [:read_tables] end |
#load_metadata(model) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/moe/table_manager.rb', line 47 def (model) = dyna.get_item , { "hash" => { s: munged_model(model) } } MultiJson.load ["payload"]["s"], symbolize_keys: true end |
#load_table(table_name) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/moe/table_manager.rb', line 54 def load_table(table_name) table = dyna.find table_name { table_name: table.table.table_name, key: get_key(table.table.key_schema), read_capacity: table.table.provisioned_throughput.read_capacity_units, write_capacity: table.table.provisioned_throughput.write_capacity_units } end |
#meta_table_name ⇒ Object
65 66 67 |
# File 'lib/moe/table_manager.rb', line 65 def "moe_#{ENV['RAILS_ENV']}_manager" end |
#meta_table_names ⇒ Object
69 70 71 |
# File 'lib/moe/table_manager.rb', line 69 def ["#{}_1", "#{}_2"] end |
#table_name(model) ⇒ Object
73 74 75 |
# File 'lib/moe/table_manager.rb', line 73 def table_name(model) "moe_#{ENV['RAILS_ENV']}_#{date}_#{munged_model(model)}".downcase end |
#update_metadata(model, payload) ⇒ Object
77 78 79 80 81 82 83 84 |
# File 'lib/moe/table_manager.rb', line 77 def (model, payload) item = { "hash" => munged_model(model), "payload" => MultiJson.dump(payload) } dyna.put_item , item end |