Class: QME::Database::Loader
- Inherits:
-
Object
- Object
- QME::Database::Loader
- Includes:
- QME::DatabaseAccess
- Defined in:
- lib/qme/measure/database_loader.rb
Overview
Utility class for working with JSON files and the database
Instance Method Summary collapse
-
#drop_collection(collection_name) ⇒ Object
Drop a database collection.
-
#initialize(db_name = nil) ⇒ Loader
constructor
Create a new Loader.
- #remove_bundle(bundle_id, bundle_collection = 'bundles', measure_collection = 'measures') ⇒ Object
-
#save(collection_name, json) ⇒ Object
Save a JSON hash to the specified collection, creates the collection if it doesn’t already exist.
-
#save_bundle(bundle_dir, measure_dir, bundle_collection = 'bundles', measure_collection = 'measures') ⇒ Object
Save a bundle to the db, this will save the bundle meta data, javascript extension functions and measures to the db in their respective locations.
-
#save_measure(measure_dir, collection_name) ⇒ Array
Load a measure from the filesystem and save it in the database.
- #save_system_js_fn(name, fn) ⇒ Object
Methods included from QME::DatabaseAccess
#determine_connection_information, #get_db, #inject_db
Constructor Details
#initialize(db_name = nil) ⇒ Loader
Create a new Loader.
11 12 13 |
# File 'lib/qme/measure/database_loader.rb', line 11 def initialize(db_name = nil) determine_connection_information(db_name) end |
Instance Method Details
#drop_collection(collection_name) ⇒ Object
Drop a database collection
37 38 39 |
# File 'lib/qme/measure/database_loader.rb', line 37 def drop_collection(collection_name) get_db.drop_collection(collection_name) end |
#remove_bundle(bundle_id, bundle_collection = 'bundles', measure_collection = 'measures') ⇒ Object
73 74 75 76 77 78 79 80 |
# File 'lib/qme/measure/database_loader.rb', line 73 def remove_bundle(bundle_id, bundle_collection = 'bundles', measure_collection = 'measures') bundle = get_db[bundle_collection].find_one(bundle_id) bundle['measures'].each do |measure| mes = get_db[measure_collection].find_one(measure) get_db[measure_collection].remove(mes) end get_db[bundle_collection].remove(bundle) end |
#save(collection_name, json) ⇒ Object
Save a JSON hash to the specified collection, creates the collection if it doesn’t already exist.
31 32 33 |
# File 'lib/qme/measure/database_loader.rb', line 31 def save(collection_name, json) get_db[collection_name].save(json) end |
#save_bundle(bundle_dir, measure_dir, bundle_collection = 'bundles', measure_collection = 'measures') ⇒ Object
Save a bundle to the db, this will save the bundle meta data, javascript extension functions and measures to the db in their respective locations
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/qme/measure/database_loader.rb', line 55 def save_bundle(bundle_dir, measure_dir, bundle_collection='bundles', measure_collection = 'measures') bundle = QME::Measure::Loader.load_bundle(bundle_dir, measure_dir) bundle[:bundle_data][:measures] = [] b_id = save(bundle_collection,bundle[:bundle_data]) measures = bundle[:measures] measures.each do |measure| measure[:bundle] = b_id m_id = save(measure_collection,measure) bundle[:bundle_data][:measures] << m_id end save(bundle_collection,bundle[:bundle_data]) bundle[:extensions].each do |name, fn| save_system_js_fn(name, fn) end bundle end |
#save_measure(measure_dir, collection_name) ⇒ Array
Load a measure from the filesystem and save it in the database.
19 20 21 22 23 24 25 |
# File 'lib/qme/measure/database_loader.rb', line 19 def save_measure(measure_dir, collection_name) measures = QME::Measure::Loader.load_measure(measure_dir) measures.each do |measure| save(collection_name, measure) end measures end |
#save_system_js_fn(name, fn) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/qme/measure/database_loader.rb', line 41 def save_system_js_fn(name, fn) get_db['system.js'].save( { "_id" => name, "value" => BSON::Code.new(fn) } ) end |