enbility / eebus-go

EEBUS protocol implementation in go
https://enbility.net
MIT License
59 stars 21 forks source link

add updater for measurement #27

Closed lukx closed 2 years ago

DerAndereAndi commented 2 years ago

Super! Das sieht sehr gut aus.

Nur ne Kleinigkeit hätte ich: die Formatierung. Wir lassen den Code automatisch mit goimports beim Speichern formatieren. D.h. da würde es dann direkt viele Änderungen geben wenn man nur in einer Zeile etwas ändern will.

DerAndereAndi commented 2 years ago

Ach noch etwas: Ein paar Testfälle wie in eletrcicalconnection_additions_test.go wären super :)

lukx commented 2 years ago

Ich hab mal überlegt, aber meine Go-Kenntnisse reichen nicht aus... Kann man dieses Updater-Konstrukt irgendwie generisch machen, sodass man es nicht für alle Models replizieren muss?

DerAndereAndi commented 2 years ago

@taimo42 Das ist eine Frage für dich ;)

Die Testcases kann ich wohl auch nachliefern. Müsste dazu hoffentlich genug in meinen Logs haben um Testfälle zu schreiben und das zu testen.

taimo42 commented 2 years ago

Das Problem ist, dass die Models sehr unterschiedlich sind. Z.B. hat ElectricalConnectionPermittedValueSetDataType zwei Properties (ElectricalConnectionId und ParameterId), die den HashKey bilden,MeasurementConstraintsDataType hat aber nur eins (MeasurementId). Auch die Selektoren sind sehr verschieden. Man könnte versuchen mit Hilfe von Reflection den Code zu analysieren und dann so einen generischen Algorithmus schreiben, dieser wäre jedoch sehr komplex. Mit dem aktuellen Ansatz habe ich versucht so viel Logik wie möglich auszulagern (siehe update.go). Ich will aber nicht ausschließen, dass das noch verbessert werden kann :-)

DerAndereAndi commented 2 years ago

Danke @lukx, ist drin :)