buzzn / core

Die Kraft der Gemeinschaft
GNU Affero General Public License v3.0
1 stars 0 forks source link

Beekeeper: meter change drops information of old meter #1511

Closed mguentner closed 5 years ago

mguentner commented 5 years ago

We need to save this data in the platform. How to do it?

mguentner commented 5 years ago

This is how I currently dump it:

meterids = Group::Localpool.all.collect{|g| [g.slug, g.meters.collect{|meter| ["#{meter.legacy_buzznid}_#{meter.registers.sort_by{ |x| x.meta.name }.collect{|register| register.meta.name }.join('#')}", meter.product_serialnumber] }.to_h]}.to_h
mguentner commented 5 years ago

Needed to adjust output due to hash collisions:

meterids = Group::Localpool.all.collect{|g| [g.slug, g.meters.collect{|meter| ["#{meter.legacy_buzznid}_#{meter.registers.sort_by{ |x| x.meta.name }.collect{|register| "#{register.meta.name}_#{register.readings.order(:date).first.raw_value}" }.join('#')}", meter.product_serialnumber] }.to_h]}.to_h
mguentner commented 5 years ago

New magic:

meterids = Group::Localpool.all.collect{|g| [g.slug, g.meters.collect{|meter| ["#{meter.legacy_buzznid}_#{meter.registers.sort_by{ |x| x.meta.name }.collect{|register| "#{register.readings.order(:date).first.raw_value}_#{register.readings.order(:date).first.date}" }.join('#')}", meter.product_serialnumber] }.to_h]}.to_h
mguentner commented 5 years ago

I think we are done.