diff --git a/connect/service.go b/connect/service.go index 17ecf6cd..0e5803cc 100644 --- a/connect/service.go +++ b/connect/service.go @@ -83,11 +83,21 @@ func (svc service) checkRequeue(deviceUDID string) (int, error) { // Acknowledge Queries sent with DeviceInformation command func (svc service) ackQueryResponses(req mdm.Response) error { - existing, err := svc.devices.GetDeviceByUDID(req.UDID, []string{"device_uuid", "serial_number"}...) + devices, err := svc.devices.Devices( + device.SerialNumber{SerialNumber: req.QueryResponses.SerialNumber}, + device.UDID{UDID: req.UDID}, + ) + if err != nil { return err } + if len(devices) > 1 { + return errors.New("Expected a single query result for device, got more than one.") + } + + existing := devices[0] + now := time.Now() existing.LastCheckin = &now existing.LastQueryResponse, err = json.Marshal(req.QueryResponses) @@ -105,5 +115,5 @@ func (svc service) ackQueryResponses(req mdm.Response) error { existing.OSVersion = req.QueryResponses.OSVersion existing.SerialNumber = req.QueryResponses.SerialNumber - return svc.devices.Save("queryResponses", existing) + return svc.devices.Save("queryResponses", &existing) } diff --git a/device/datastore.go b/device/datastore.go index de1eba01..6bb0c68d 100644 --- a/device/datastore.go +++ b/device/datastore.go @@ -238,7 +238,7 @@ func addWhereFilters(stmt string, params ...interface{}) string { } if len(where) != 0 { - whereFilter := strings.Join(where, ",") + whereFilter := strings.Join(where, " OR ") stmt = fmt.Sprintf("%s WHERE %s", stmt, whereFilter) } return stmt