fix(sync): offline detector wiped device name, auto_sync, and metadata on every transition
setOfflineMode/setOnlineMode only mean to flip sync_enabled, but they called the full-row UpdateDevice with Go zero values — which wrote DeviceName: "" and NULLed auto_sync/sync_frequency_minutes/ device_metadata on the device row at every offline->online flip. New targeted SetDeviceSyncEnabled query touches exactly that column; the real settings update keeps using UpdateDevice. Caught as part of the H4 helper-census pass (plan §5.4 erasure list).
This commit is contained in:
1 parent
188ae076ab
commit
082a3e0c3c
4 files changed
+53
-6
No files matched your search
@@ -133,11 +133,12 @@ func (d *OfflineDetector) handleReconnectedDevice(ctx context.Context, status De
|
||||
}
|
||||
|
||||
func (d *OfflineDetector) setOfflineMode(ctx context.Context, deviceID pgtype.UUID) {
|
||||
_, err := d.db.UpdateDevice(ctx, database.UpdateDeviceParams{
|
||||
// Targeted flip: the full-row UpdateDevice used here zeroed the
|
||||
// device name, auto_sync, frequency, and metadata on every
|
||||
// transition (pg zero values are not "leave alone").
|
||||
_, err := d.db.SetDeviceSyncEnabled(ctx, database.SetDeviceSyncEnabledParams{
|
||||
ID: deviceID,
|
||||
DeviceName: "",
|
||||
SyncEnabled: pgtype.Bool{Bool: false, Valid: true},
|
||||
AutoSync: pgtype.Bool{},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
@@ -146,11 +147,12 @@ func (d *OfflineDetector) setOfflineMode(ctx context.Context, deviceID pgtype.UU
|
||||
}
|
||||
|
||||
func (d *OfflineDetector) setOnlineMode(ctx context.Context, deviceID pgtype.UUID) {
|
||||
_, err := d.db.UpdateDevice(ctx, database.UpdateDeviceParams{
|
||||
// Targeted flip: the full-row UpdateDevice used here zeroed the
|
||||
// device name, auto_sync, frequency, and metadata on every
|
||||
// transition (pg zero values are not "leave alone").
|
||||
_, err := d.db.SetDeviceSyncEnabled(ctx, database.SetDeviceSyncEnabledParams{
|
||||
ID: deviceID,
|
||||
DeviceName: "",
|
||||
SyncEnabled: pgtype.Bool{Bool: true, Valid: true},
|
||||
AutoSync: pgtype.Bool{},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
|
||||
Reference in new issue
Block a user