|
@@ -81,6 +81,15 @@ func setDevice(target *models.Device, src *models.Device) {
|
|
|
target.VendorID = src.VendorID
|
|
|
}
|
|
|
|
|
|
+//func setSubDevice(target *models.SubDevice, src *models.SubDevice) {
|
|
|
+// target.ID = src.ID
|
|
|
+// target.RecordId = src.RecordId
|
|
|
+// target.SubDeviceID = src.SubDeviceID
|
|
|
+// target.DeviceCode = src.DeviceCode
|
|
|
+// target.Status = src.Status
|
|
|
+// target.Name = src.Name
|
|
|
+//}
|
|
|
+
|
|
|
// SaveVendor will create a vendor if the ID field is not initialized
|
|
|
// if ID field is initialized, it will update the conresponding vendor.
|
|
|
func (r *Registry) SaveVendor(vendor *models.Vendor, reply *models.Vendor) error {
|
|
@@ -535,3 +544,64 @@ func (r *Registry) CheckDeviceNetConfig(args *rpcs.ArgsCheckDeviceNetConfig, rep
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+// SaveSubDevice try to save a sub_device
|
|
|
+func (r *Registry) SaveSubDevice(subDevice *models.SubDevice, reply *models.SubDevice) error {
|
|
|
+ db, err := getDB()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if db.Where(&models.SubDevice{SubDeviceID: subDevice.SubDeviceID}).First(reply).RecordNotFound() {
|
|
|
+ reply.RecordId = guid.S()
|
|
|
+ reply.DeviceCode = subDevice.DeviceCode
|
|
|
+ reply.SubDeviceID = subDevice.SubDeviceID
|
|
|
+ reply.Status = 1
|
|
|
+
|
|
|
+ err = db.Save(reply).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //delete cache
|
|
|
+ cache := getCache()
|
|
|
+ cacheKey := fmt.Sprintf("SubDevice:%v", subDevice.SubDeviceID)
|
|
|
+ if _, ok := cache.Get(cacheKey); ok {
|
|
|
+ cache.Delete(cacheKey)
|
|
|
+ }
|
|
|
+ // sub_device has already been saved. just update status .
|
|
|
+ reply.Status = 1
|
|
|
+ err = db.Save(reply).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// UpdateSubDeviceStatus will update a sub_device status
|
|
|
+func (r *Registry) UpdateSubDeviceStatus(subDevice *models.SubDevice, reply *models.SubDevice) error {
|
|
|
+ db, err := getDB()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ err = db.Where(&models.SubDevice{SubDeviceID: subDevice.SubDeviceID}).First(reply).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ //delete cache
|
|
|
+ cache := getCache()
|
|
|
+ cacheKey := fmt.Sprintf("SubDevice:%v", subDevice.SubDeviceID)
|
|
|
+ if _, ok := cache.Get(cacheKey); ok {
|
|
|
+ cache.Delete(cacheKey)
|
|
|
+ }
|
|
|
+
|
|
|
+ reply.Status = subDevice.Status
|
|
|
+
|
|
|
+ err = db.Save(reply).Error
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|