Class: Nuva::Nuva
- Inherits:
-
Object
- Object
- Nuva::Nuva
- Defined in:
- lib/nuva.rb
Constant Summary collapse
- DEFAULT_CDN_URI =
URI("https://nuva.svc.edge.scw.cloud")
Instance Attribute Summary collapse
-
#queries ⇒ Object
readonly
Returns the value of attribute queries.
-
#repositories ⇒ Object
readonly
Returns the value of attribute repositories.
Class Method Summary collapse
- .fetch_latest_version_hash(cdn_uri: DEFAULT_CDN_URI, http: nil) ⇒ Object
- .load(cdn_uri: DEFAULT_CDN_URI, lang: "en", hash: nil) ⇒ Object
- .load_from_file(path) ⇒ Object
Instance Method Summary collapse
-
#initialize(db) ⇒ Nuva
constructor
A new instance of Nuva.
- #inspect ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(db) ⇒ Nuva
Returns a new instance of Nuva.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/nuva.rb', line 16 def initialize(db) @db = db @repositories = OpenStruct.new @repositories.vaccines = VaccineRepository.new db.vaccines @repositories.valences = ValenceRepository.new db.valences @repositories.diseases = DiseaseRepository.new db.diseases @repositories.freeze @queries = OpenStruct.new @queries.valences_by_vaccine = ::Nuva::Queries::ValencesByVaccineQuery.new @repositories @queries.vaccines_by_valence = ::Nuva::Queries::VaccinesByValenceQuery.new @repositories @queries.vaccines_by_disease = ::Nuva::Queries::VaccinesByDiseaseQuery.new @repositories @queries.valences_by_disease = ::Nuva::Queries::ValencesByDiseaseQuery.new @repositories @queries.diseases_by_vaccine = ::Nuva::Queries::DiseasesByVaccineQuery.new @repositories @queries.diseases_by_valence = ::Nuva::Queries::DiseasesByValenceQuery.new @repositories @queries.vaccine_fuzzy_search = ::Nuva::Queries::VaccineFuzzySearchQuery.new @repositories @queries.lookup_vaccine_by_code = ::Nuva::Queries::LookupVaccineByCodeQuery.new @repositories @queries.lookup_equivalent_vaccines = ::Nuva::Queries::LookupEquivalentVaccinesQuery.new @repositories @queries.lookup_generalized_vaccines = ::Nuva::Queries::LookupGeneralizedVaccinesQuery.new @repositories, @queries.valences_by_vaccine @queries.all_nomenclatures = ::Nuva::Queries::AllNomenclaturesQuery.new @repositories @queries.all_code_by_nomenclature = ::Nuva::Queries::AllCodeByNomenclatureQuery.new @repositories @queries.freeze end |
Instance Attribute Details
#queries ⇒ Object (readonly)
Returns the value of attribute queries.
14 15 16 |
# File 'lib/nuva.rb', line 14 def queries @queries end |
#repositories ⇒ Object (readonly)
Returns the value of attribute repositories.
13 14 15 |
# File 'lib/nuva.rb', line 13 def repositories @repositories end |
Class Method Details
.fetch_latest_version_hash(cdn_uri: DEFAULT_CDN_URI, http: nil) ⇒ Object
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/nuva.rb', line 75 def fetch_latest_version_hash(cdn_uri: DEFAULT_CDN_URI, http: nil) if http.nil? http = init_http(cdn_uri) passed_http = false end response = http.get("/versions/last.json") hash = JSON.parse(response.body)["dump_hash"] http.finish unless passed_http hash end |
.load(cdn_uri: DEFAULT_CDN_URI, lang: "en", hash: nil) ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/nuva.rb', line 65 def load(cdn_uri: DEFAULT_CDN_URI, lang: "en", hash: nil) init_http(cdn_uri) do |http| # Fetch version manifest if necessary hash ||= fetch_latest_version_hash(http:) response = http.get("/proto/#{hash}_#{lang}.db") ::Nuva::Nuva.new(::Nuva::NuvaDatabase.decode(response.body)) end end |
.load_from_file(path) ⇒ Object
86 87 88 |
# File 'lib/nuva.rb', line 86 def load_from_file(path) Nuva.new(NuvaDatabase.decode(File.read(path))) end |
Instance Method Details
#inspect ⇒ Object
58 59 60 |
# File 'lib/nuva.rb', line 58 def inspect "#<Nuva::Nuva version=#{version.major}.#{version.minor}.#{version.patch} disease_count=#{repositories.diseases.all.count} vaccine_count=#{repositories.vaccines.all.count} valence_count=#{repositories.valences.all.count}>" end |
#version ⇒ Object
54 55 56 |
# File 'lib/nuva.rb', line 54 def version @db.version end |