add update method
This commit is contained in:
parent
1631f921b0
commit
1f62e375e7
|
@ -0,0 +1,67 @@
|
|||
package devicemngmt
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/Selly-Modules/logger"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
// UpdateOptions ...
|
||||
type UpdateOptions struct {
|
||||
UserAgent string
|
||||
AppVersion string
|
||||
IP string
|
||||
FCMToken string
|
||||
AuthToken string
|
||||
Language string
|
||||
Model string
|
||||
Manufacturer string
|
||||
}
|
||||
|
||||
// UpdateByDeviceID ...
|
||||
func (s Service) UpdateByDeviceID(deviceID string, payload UpdateOptions) error {
|
||||
var (
|
||||
ctx = context.Background()
|
||||
col = s.getDeviceCollection()
|
||||
cond = bson.M{
|
||||
"deviceID": deviceID,
|
||||
}
|
||||
)
|
||||
|
||||
// Validate payload
|
||||
err := payload.validate()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Setup update data
|
||||
updateData := bson.M{
|
||||
"$set": bson.M{
|
||||
"osName": getOSName(payload.UserAgent),
|
||||
"osVersion": getOSVersion(payload.UserAgent),
|
||||
"ip": payload.IP,
|
||||
"language": getLanguage(payload.Language),
|
||||
"authToken": payload.AuthToken,
|
||||
"fcmToken": payload.FCMToken,
|
||||
"model": payload.Model,
|
||||
"manufacturer": payload.Manufacturer,
|
||||
"appVersion": payload.AppVersion,
|
||||
"isMobile": payload.AppVersion != "",
|
||||
"lastActivatedAt": now(),
|
||||
},
|
||||
}
|
||||
|
||||
// Update
|
||||
_, err = col.UpdateOne(ctx, cond, updateData)
|
||||
if err != nil {
|
||||
logger.Error("devicemngt - updateByDeviceID", logger.LogData{
|
||||
"deviceID": deviceID,
|
||||
"err": err.Error(),
|
||||
})
|
||||
return fmt.Errorf("error when update device: %s", err.Error())
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
28
validate.go
28
validate.go
|
@ -49,3 +49,31 @@ func (co CreateOptions) validate() error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (uo UpdateOptions) validate() error {
|
||||
// UserAgent
|
||||
if uo.UserAgent == "" {
|
||||
logger.Error("devicemngt - Update: no userAgent data", logger.LogData{
|
||||
"payload": uo,
|
||||
})
|
||||
return errors.New("no userAgent data")
|
||||
}
|
||||
|
||||
// IP
|
||||
if uo.IP == "" {
|
||||
logger.Error("devicemngt - Update: no ip data", logger.LogData{
|
||||
"payload": uo,
|
||||
})
|
||||
return errors.New("no ip data")
|
||||
}
|
||||
|
||||
// AuthToken
|
||||
if uo.AuthToken == "" {
|
||||
logger.Error("devicemngt - Update: no authToken data", logger.LogData{
|
||||
"payload": uo,
|
||||
})
|
||||
return errors.New("no authToken data")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue