lib/alephant/publisher/models/writer.rb in alephant-publisher-0.0.2 vs lib/alephant/publisher/models/writer.rb in alephant-publisher-0.0.3
- old
+ new
@@ -4,43 +4,45 @@
module Publisher
class Writer
attr_reader :mapper, :cache
def initialize(opts)
- @renderer_id =
- opts[:renderer_id]
+ @renderer_id = opts[:renderer_id]
+
@cache = Cache.new(
opts[:s3_bucket_id],
opts[:s3_object_path]
)
+
@mapper = RenderMapper.new(
opts[:renderer_id],
opts[:view_path]
)
- @lookup_table_name =
- opts[:lookup_table_name]
+
+ @lookup_table_name = opts[:lookup_table_name]
end
def write(data, version = nil)
+ lookup = Lookup.create(@lookup_table_name)
+
mapper.generate(data).each do |id, r|
- store(id, r.render, data[:options], version)
+ store(id, r.render, data[:options], version, lookup)
end
+
+ lookup.process!
end
private
- def store(id, content, options, version)
+
+ def store(id, content, options, version, lookup)
location = location_for(
id,
Crimp.signature(options),
version
)
cache.put(location, content)
- lookup(id).write(options, location)
- end
-
- def lookup(component_id)
- Lookup.create(@lookup_table_name, component_id)
+ lookup.batch_write(id, options, location)
end
def location_for(component_id, options_hash, version = nil)
base_name = "#{@renderer_id}/#{component_id}/#{options_hash}"
version ? "#{base_name}/#{version}" : base_name