lib/nuva.rb in nuva-0.3.0 vs lib/nuva.rb in nuva-0.3.1
- old
+ new
@@ -1,80 +1,95 @@
# frozen_string_literal: true
-require_relative 'nuva/version'
-require_relative 'nuva/NuvaDatabase_pb'
-require_relative 'nuva/repository'
-require_relative 'nuva/queries'
-require 'net/http'
-require 'json'
-require 'ostruct'
+require_relative "nuva/version"
+require_relative "nuva/NuvaDatabase_pb"
+require_relative "nuva/repository"
+require_relative "nuva/queries"
+require "net/http"
+require "json"
+require "ostruct"
module Nuva
- class Nuva
- attr_reader :repositories
- attr_reader :queries
+ class Nuva
+ attr_reader :repositories
+ attr_reader :queries
- 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
+ def initialize(db)
+ @db = db
- @queries = OpenStruct.new
- @queries.valences_by_vaccine = ::Nuva::Queries::ValencesByVaccine.new @repositories
- @queries.vaccines_by_valence = ::Nuva::Queries::VaccinesByValence.new @repositories
- @queries.vaccines_by_disease = ::Nuva::Queries::VaccinesByDisease.new @repositories
- @queries.valences_by_disease = ::Nuva::Queries::ValencesByDisease.new @repositories
- @queries.diseases_by_vaccine = ::Nuva::Queries::DiseasesByVaccine.new @repositories
- @queries.diseases_by_valence = ::Nuva::Queries::DiseasesByValence.new @repositories
- @queries.vaccine_fuzzy_search = ::Nuva::Queries::VaccineFuzzySearch.new @repositories
- @queries.lookup_vaccine_by_code = ::Nuva::Queries::LookupVaccineByCode.new @repositories
- @queries.lookup_equivalent_vaccines = ::Nuva::Queries::LookupEquivalentVaccines.new @repositories
- @queries.lookup_generalized_vaccines = ::Nuva::Queries::LookupGeneralizedVaccines.new @repositories, @queries.valences_by_vaccine
- @queries.all_nomenclatures = ::Nuva::Queries::AllNomenclatures.new @repositories
- @queries.all_code_by_nomenclature = ::Nuva::Queries::AllCodeByNomenclature.new @repositories
- @queries.freeze
- end
+ @repositories = OpenStruct.new
+ @repositories.vaccines = VaccineRepository.new db.vaccines
+ @repositories.valences = ValenceRepository.new db.valences
+ @repositories.diseases = DiseaseRepository.new db.diseases
+ @repositories.freeze
- def version
- @db.version
- end
+ @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
- def self.load(lang = "en")
- latest_version_uri = URI "https://cdnnuva.mesvaccins.net/versions/last.json"
+ def version
+ @db.version
+ end
- ::Net::HTTP.start(latest_version_uri.host, latest_version_uri.port,
- use_ssl: latest_version_uri.scheme == 'https') do |http|
-
- # Fetch version manifest
- req = ::Net::HTTP::Get.new latest_version_uri
+ def self.load(lang = "en")
+ latest_version_uri =
+ URI "https://cdnnuva.mesvaccins.net/versions/last.json"
- res = http.request req
- res.value
+ ::Net::HTTP.start(
+ latest_version_uri.host,
+ latest_version_uri.port,
+ use_ssl: latest_version_uri.scheme == "https"
+ ) do |http|
+ # Fetch version manifest
+ req = ::Net::HTTP::Get.new latest_version_uri
- manifest = JSON.parse(res.body)
+ res = http.request req
+ res.value
- dump_hash = manifest['dump_hash']
+ manifest = JSON.parse(res.body)
- # Fetch latest database
- dump_uri = latest_version_uri.dup
- dump_uri.path = "/proto/#{dump_hash}_#{lang}.db"
+ dump_hash = manifest["dump_hash"]
- req = ::Net::HTTP::Get.new dump_uri
+ # Fetch latest database
+ dump_uri = latest_version_uri.dup
+ dump_uri.path = "/proto/#{dump_hash}_#{lang}.db"
- res = http.request req
- res.value
+ req = ::Net::HTTP::Get.new dump_uri
- # The return value of the block is returned by the start method
- ::Nuva::Nuva.new(::Nuva::NuvaDatabase.decode(res.body))
- end
+ res = http.request req
+ res.value
- end
+ # The return value of the block is returned by the start method
+ ::Nuva::Nuva.new(::Nuva::NuvaDatabase.decode(res.body))
+ end
+ end
- def self.load_from_file(path)
- Nuva.new(NuvaDatabase.decode(File.read(path)))
- end
+ def self.load_from_file(path)
+ Nuva.new(NuvaDatabase.decode(File.read(path)))
end
+ end
end