| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- require 'yajl/json_gem'
- module Docs
- class Manifest
- FILENAME = 'docs.json'
- def initialize(store, docs)
- @store = store
- @docs = docs
- end
- def store
- @store.write FILENAME, to_json
- end
- def as_json
- indexed_docs.map do |doc|
- json = doc.as_json
- json[:mtime] = doc_mtime(doc)
- json[:db_size] = doc_db_size(doc)
- json
- end
- end
- def to_json
- JSON.generate(as_json)
- end
- private
- def indexed_docs
- @docs.select do |doc|
- @store.exist?(doc.index_path) && @store.exist?(doc.db_path)
- end
- end
- def doc_mtime(doc)
- [@store.mtime(doc.index_path).to_i, @store.mtime(doc.db_path).to_i].max
- end
- def doc_db_size(doc)
- @store.size(doc.db_path)
- end
- end
- end
|