class Medic::Store
Public Class Methods
available?()
click to toggle source
# File lib/medic/store.rb, line 22 def self.available? HKHealthStore.isHealthDataAvailable end
hk_store()
click to toggle source
# File lib/medic/store.rb, line 13 def self.hk_store @@hk_store end
unload()
click to toggle source
# File lib/medic/store.rb, line 17 def self.unload @@hk_store = nil @medic_store = nil end
Public Instance Methods
biological_sex() { |invert, error| ... }
click to toggle source
# File lib/medic/store.rb, line 43 def biological_sex error = Pointer.new(:object) sex = @@hk_store.biologicalSexWithError error if block_given? yield BIOLOGICAL_SEXES.invert[sex.biologicalSex], error[0] else BIOLOGICAL_SEXES.invert[sex.biologicalSex] end end
blood_type() { |invert, error| ... }
click to toggle source
# File lib/medic/store.rb, line 53 def blood_type error = Pointer.new(:object) blood = @@hk_store.bloodTypeWithError error if block_given? yield BLOOD_TYPES.invert[blood.bloodType], error[0] else BLOOD_TYPES.invert[blood.bloodType] end end
date_of_birth() { |birthday, error| ... }
click to toggle source
# File lib/medic/store.rb, line 63 def date_of_birth error = Pointer.new(:object) birthday = @@hk_store.dateOfBirthWithError error if block_given? yield birthday, error[0] else birthday end end
delete(hk_object, block=Proc.new)
click to toggle source
# File lib/medic/store.rb, line 73 def delete(hk_object, block=Proc.new) @@hk_store.deleteObject(hk_object, withCompletion: ->(success, error){ block.call(success, error) }) end
Also aliased as: delete_object
disable_all_background_delivery(block=Proc.new)
click to toggle source
# File lib/medic/store.rb, line 117 def disable_all_background_delivery(block=Proc.new) @@hk_store.disableAllBackgroundDeliveryWithCompletion(->(success, error){ block.call(success, error) }) end
disable_background_delivery(type, block=Proc.new)
click to toggle source
# File lib/medic/store.rb, line 109 def disable_background_delivery(type, block=Proc.new) return disable_all_background_delivery(block) if type == :all @@hk_store.disableBackgroundDeliveryForType(object_type(type), withCompletion: ->(success, error){ block.call(success, error) }) end
Also aliased as: disable_background_delivery_for
enable_background_delivery(type, frequency, block=Proc.new)
click to toggle source
# File lib/medic/store.rb, line 102 def enable_background_delivery(type, frequency, block=Proc.new) @@hk_store.enableBackgroundDeliveryForType(object_type(type), frequency: update_frequency(frequency), withCompletion: ->(success, error){ block.call(success, error) }) end
Also aliased as: enable_background_delivery_for
enable_background_delivery_for(type, frequency, block=Proc.new)
Alias for: enable_background_delivery
execute(query)
click to toggle source
TODO: workout support addSamples:toWorkout:completion:
# File lib/medic/store.rb, line 92 def execute(query) @@hk_store.executeQuery(query) end
Also aliased as: execute_query
save(hk_objects, block=Proc.new)
click to toggle source
# File lib/medic/store.rb, line 80 def save(hk_objects, block=Proc.new) objs_array = hk_objects.is_a?(Array) ? hk_objects : [hk_objects] @@hk_store.saveObjects(objs_array.map{|obj| prepare_for_save(obj)}, withCompletion: ->(success, error){ block.call(success, error) }) end
Also aliased as: save_object, save_objects
stop(query)
click to toggle source
# File lib/medic/store.rb, line 97 def stop(query) @@hk_store.stopQuery(query) end
Also aliased as: stop_query
Private Instance Methods
prepare_for_save(sample)
click to toggle source
# File lib/medic/store.rb, line 125 def prepare_for_save(sample) return sample if sample.kind_of? HKSample date = sample[:date] || NSDate.date start_date = sample[:start] || sample[:start_date] || date end_date = sample[:end] || sample[:end_date] || date metadata = sample[:metadata] || {} type = object_type(sample[:type] || sample[:sample_type] || sample[:quantity_type] || sample[:correlation_type] || sample[:category_type]) case type when HKQuantityType quantity = HKQuantity.quantityWithUnit((sample_unit(sample[:unit]) || type.canonicalUnit), doubleValue: sample[:quantity]) HKQuantitySample.quantitySampleWithType(type, quantity: quantity, startDate: start_date, endDate: end_date, metadata: metadata) when HKCorrelationType objects = (sample[:objects].is_a?(Array) ? sample[:objects] : [sample[:objects]]).map{|obj| prepare_for_save(obj)} HKCorrelation.correlationWithType(type, startDate: start_date, endDate: end_date, objects: objects, metadata: metadata) when HKCategoryType value = sleep_analysis(sample[:value]) # SleepAnalysis is the only category type at the moment HKCategorySample.categorySampleWithType(type, value: value, startDate: start_date, endDate: end_date, metadata: metadata) else # handle workouts end end