add createMethod #2
|
@ -3,31 +3,38 @@ package devicemngmt
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
"github.com/Selly-Modules/logger"
|
||||
"github.com/Selly-Modules/mongodb"
|
||||
ua "github.com/mssola/user_agent"
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
)
|
||||
|
||||
// DeviceCreate ...
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
type DeviceCreate struct {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// CreateOptions ...
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
type CreateOptions struct {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
DeviceID string
|
||||
UserID string
|
||||
UserAgent string
|
||||
AppVersion string
|
||||
IP string
|
||||
FCMToken string
|
||||
AuthToken string
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() thiếu AuthToken thiếu AuthToken
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
Language string
|
||||
}
|
||||
|
||||
// Create ...
|
||||
func (s Service) Create(payload DeviceCreate) error {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
func (s Service) Create(payload CreateOptions) error {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
var (
|
||||
col = s.getDeviceCollection()
|
||||
ctx = context.Background()
|
||||
)
|
||||
|
||||
// Validate payload
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
err := payload.validate()
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if err != nil {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return err
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// New device data from payload
|
||||
deviceData, err := payload.newDevice()
|
||||
if err != nil {
|
||||
|
@ -43,7 +50,7 @@ func (s Service) Create(payload DeviceCreate) error {
|
|||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
![]() done done
|
||||
})
|
||||
}
|
||||
if !device.ID.IsZero() {
|
||||
return errors.New("deviceID already exists")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return errors.New("this device is already existed")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
|
||||
// Create device
|
||||
|
@ -53,78 +60,33 @@ func (s Service) Create(payload DeviceCreate) error {
|
|||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
![]() done done
|
||||
"doc": deviceData,
|
||||
"err": err.Error(),
|
||||
})
|
||||
return errors.New("create device fail")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return fmt.Errorf("error when create device: %s", err.Error())
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (payload DeviceCreate) newDevice() (result Device, err error) {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
func (payload CreateOptions) newDevice() (result Device, err error) {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
timeNow := now()
|
||||
device := Device{
|
||||
ID: mongodb.NewObjectID(),
|
||||
DeviceID: payload.DeviceID,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
OSName: getOSName(payload.UserAgent),
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
OSVersion: getOSVersion(payload.UserAgent),
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
IP: payload.IP,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
Language: getLanguage(payload.Language),
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set move ra 1 func khác để set
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
AuthToken: payload.AuthToken,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
LastActivityAt: timeNow,
|
||||
CreatedAt: timeNow,
|
||||
FCMToken: payload.FCMToken,
|
||||
}
|
||||
|
||||
// Set deviceID
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if payload.DeviceID == "" {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
logger.Error("devicemngt - Create: no deviceID data", logger.LogData{
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
"payload": payload,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
})
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
err = errors.New("no deviceID data")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.DeviceID = payload.DeviceID
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// OSName, OSVersion
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if payload.UserAgent == "" {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
logger.Error("devicemngt - Create: no userAgent data", logger.LogData{
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
"payload": payload,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
})
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
err = errors.New("no userAgent data")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
uaData := ua.New(payload.UserAgent)
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.OSName = uaData.OSInfo().Name
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.OSVersion = uaData.OSInfo().Version
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// App version
|
||||
if payload.AppVersion != "" {
|
||||
device.AppVersion = payload.AppVersion
|
||||
device.IsMobile = true
|
||||
}
|
||||
|
||||
// IP
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if payload.IP == "" {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
logger.Error("devicemngt - Create: no ip data", logger.LogData{
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
"payload": payload,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
})
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
err = errors.New("no ip data")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// Language, default is vietnamese(vi)
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if payload.Language == "" {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.Language = viLanguage
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
} else {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.Language = enLanguage
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// userIDe
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
userID, _ := mongodb.NewIDFromString(payload.UserID)
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
if userID.IsZero() {
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
logger.Error("devicemngt - Create: invalid userID data", logger.LogData{
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
"payload": payload,
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
})
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
err = errors.New("invalid userID data")
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
return
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
}
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
// Generate authToken from userID
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
device.AuthToken = s.generateAuthToken(userID)
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
|
||||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
|
||||
result = device
|
||||
return
|
||||
}
|
||||
|
|
|||
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() DeviceCreate -> CreateOptions DeviceCreate -> CreateOptions
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]() deviceID already exists -> this device is already existed deviceID already exists -> this device is already existed
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]()
```go
return fmt.Errorf("error when create device: %s", err.Error())
```
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để validate move ra 1 func khác để validate
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() move ra 1 func khác để set, set cứng move ra 1 func khác để set, set cứng `device.Language = langVi`
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() ko cần check userID là mongo id, ko empty là được ko cần check userID là mongo id, ko empty là được
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() done done
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() đoạn này + đoạn device id iszero, viết thành 1 func khác đoạn này + đoạn device id iszero, viết thành 1 func khác `isDeviceIDExisted` trả về boolean
![]() done done
![]() done done
|
|
@ -1,17 +0,0 @@
|
|||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
![]() done done
|
||||
package devicemngmt
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
import (
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
"time"
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
"github.com/dgrijalva/jwt-go"
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
)
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
func (s Service) generateAuthToken(userID primitive.ObjectID) string {
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
"_id": userID,
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
"exp": now().Add(time.Second * 15552000).Unix(), // 6 months
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
})
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
tokenString, _ := token.SignedString([]byte(s.AuthSecret))
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
return tokenString
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
||||
}
|
||||
![]() device làm gì có generate token hè? generate token nằm ở bên User Management chớ device làm gì có generate token hè? generate token nằm ở bên User Management chớ
![]() done done
|
|
@ -2,10 +2,10 @@ package devicemngmt
|
|||
![]() ko public cái này ko public cái này
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
![]() done done
![]() done done
|
||||
|
||||
// Constant ...
|
||||
const (
|
||||
TableDevice = "devices"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
tableDevice = "devices"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
|
||||
timezoneHCM = "Asia/Ho_Chi_Minh"
|
||||
|
||||
viLanguage = "vi"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
enLanguage = "en"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
langVi = "vi"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
langEn = "en"
|
||||
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
|
||||
)
|
||||
|
|
|||
![]() ko public cái này ko public cái này
![]() ko public cái này ko public cái này
![]()
```go
langVi = "vi"
langEn = "en"
```
![]()
```go
langVi = "vi"
langEn = "en"
```
![]() done done
![]() done done
![]() done done
![]() done done
|
|
@ -19,8 +19,6 @@ type Config struct {
|
|||
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
![]() done done
![]() done done
|
||||
MongoDB MongoDBConfig
|
||||
// Table prefix, each service has its own prefix
|
||||
TablePrefix string
|
||||
// Auth secret, used to sign token
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
AuthSecret string
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
}
|
||||
|
||||
// Service ...
|
||||
|
@ -32,9 +30,9 @@ type Service struct {
|
|||
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
![]() done done
![]() done done
|
||||
var s *Service
|
||||
|
||||
// Init ...
|
||||
func Init(config Config) error {
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
if config.MongoDB.Host == "" || config.TablePrefix == "" || config.AuthSecret == "" {
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
return errors.New("please provide all necessary information for init device")
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
func Init(config Config) (*Service, error) {
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
if config.MongoDB.Host == "" || config.TablePrefix == "" {
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
return nil, errors.New("please provide all necessary information for init device")
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
}
|
||||
|
||||
// Connect MongoDB
|
||||
|
@ -48,7 +46,7 @@ func Init(config Config) error {
|
|||
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
![]() done done
![]() done done
|
||||
)
|
||||
if err != nil {
|
||||
fmt.Println("Cannot init module DEVICE MANAGEMENT", err)
|
||||
return err
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
return nil, err
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
}
|
||||
|
||||
s = &Service{
|
||||
|
@ -56,7 +54,7 @@ func Init(config Config) error {
|
|||
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
![]() done done
![]() done done
|
||||
DB: db,
|
||||
}
|
||||
|
||||
return nil
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
return s, nil
|
||||
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
|
||||
}
|
||||
|
||||
// GetInstance ...
|
||||
|
|
|||
![]() bỏ cái này bỏ cái này
![]() bỏ cái này bỏ cái này
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() return thêm Service về nữa
return thêm Service về nữa
```go
func Init(config Config) (*Service, error) {
// ...
return s, nil
}
```
![]() done done
![]() done done
![]() done done
![]() done done
|
21
helper.go
|
@ -3,10 +3,29 @@ package devicemngmt
|
|||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
![]() done done
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
ua "github.com/mssola/user_agent"
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
// getDeviceCollection ...
|
||||
func (s Service) getDeviceCollection() *mongo.Collection {
|
||||
return s.DB.Collection(fmt.Sprintf("%s-%s", s.TablePrefix, TableDevice))
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
return s.DB.Collection(fmt.Sprintf("%s-%s", s.TablePrefix, tableDevice))
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
}
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
func getOSName(userAgent string) string {
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
uaData := ua.New(userAgent)
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
return uaData.OSInfo().Name
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
}
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
func getOSVersion(userAgent string) string {
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
uaData := ua.New(userAgent)
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
return uaData.OSInfo().Version
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
}
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
func getLanguage(lang string) string {
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
// Language, default is vietnamese(vi)
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
if lang == langEn {
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
return langEn
|
||||
![]() chỗ này return luôn chớ? chỗ này return luôn chớ?
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
![]() done done
|
||||
}
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
return langVi
|
||||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
|
||||
}
|
||||
|
|
|||
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() gom code khúc này thành func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false gom code khúc này thành `return !device.ID.IsZero()`
func này check device có tồn tại ko, nên nếu tồn tại trả true, ko tồn tại trả false
![]() done done
![]() done done
|
26
model.go
|
@ -8,17 +8,17 @@ import (
|
|||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() LastActivatedAt LastActivatedAt
![]() done done
![]() done done
|
||||
|
||||
// Device ...
|
||||
type Device struct {
|
||||
![]() define thêm define thêm `json` vào metadata
![]() done done
|
||||
ID primitive.ObjectID `bson:"_id"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
DeviceID string `bson:"deviceID"` // unique
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
IP string `bson:"ip"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
OSName string `bson:"osName"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
OSVersion string `bson:"osVersion"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
AppVersion string `bson:"appVersion"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
Language string `bson:"language"` // vi, en
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
IsMobile bool `bson:"isMobile"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
LastActivityAt time.Time `bson:"lastActivityAt"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
UserID primitive.ObjectID `bson:"userID"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
AuthToken string `bson:"authToken"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
FCMToken string `bson:"fcmToken"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
CreatedAt time.Time `bson:"createdAt"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
ID primitive.ObjectID `bson:"_id" json:"_id"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
DeviceID string `bson:"deviceID" json:"deviceID"` // unique
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
IP string `bson:"ip" json:"ip"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
OSName string `bson:"osName" json:"osName"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
OSVersion string `bson:"osVersion" json:"osVersion"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
AppVersion string `bson:"appVersion" json:"appVersion"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
Language string `bson:"language" json:"language"` // vi, en
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
IsMobile bool `bson:"isMobile" json:"isMobile"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
LastActivityAt time.Time `bson:"lastActivityAt" json:"lastActivityAt"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
UserID primitive.ObjectID `bson:"userID" json:"userID"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
AuthToken string `bson:"authToken" json:"authToken"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
FCMToken string `bson:"fcmToken" json:"fcmToken"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
|
||||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() done done
|
||||
}
|
||||
|
|
|||
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() deviceId, json dùng camel case, sửa luôn các id khác deviceId, json dùng camel case, sửa luôn các id khác
![]() done done
![]() done done
![]() LastActivatedAt LastActivatedAt
![]() LastActivatedAt LastActivatedAt
![]() done done
![]() done done
|
|
@ -0,0 +1,51 @@
|
|||
package devicemngmt
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/Selly-Modules/logger"
|
||||
)
|
||||
|
||||
func (co CreateOptions) validate() error{
|
||||
// DeviceID
|
||||
if co.DeviceID == "" {
|
||||
logger.Error("devicemngt - Create: no deviceID data", logger.LogData{
|
||||
"payload": co,
|
||||
})
|
||||
return errors.New("no deviceID data")
|
||||
}
|
||||
|
||||
// UserAgent
|
||||
if co.UserAgent == "" {
|
||||
logger.Error("devicemngt - Create: no userAgent data", logger.LogData{
|
||||
"payload": co,
|
||||
})
|
||||
return errors.New("no userAgent data")
|
||||
}
|
||||
|
||||
// IP
|
||||
if co.IP == "" {
|
||||
logger.Error("devicemngt - Create: no ip data", logger.LogData{
|
||||
"payload": co,
|
||||
})
|
||||
return errors.New("no ip data")
|
||||
}
|
||||
|
||||
// UserID
|
||||
if co.UserID == "" {
|
||||
logger.Error("devicemngt - Create: no userID data", logger.LogData{
|
||||
"payload": co,
|
||||
})
|
||||
return errors.New("no userID data")
|
||||
}
|
||||
|
||||
// AuthToken
|
||||
if co.AuthToken == "" {
|
||||
logger.Error("devicemngt - Create: no authToken data", logger.LogData{
|
||||
"payload": co,
|
||||
})
|
||||
return errors.New("no authToken data")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
DeviceCreate -> CreateOptions
DeviceCreate -> CreateOptions
deviceID already exists -> this device is already existed
deviceID already exists -> this device is already existed
move ra 1 func khác để validate
move ra 1 func khác để validate
move ra 1 func khác để validate
move ra 1 func khác để validate
move ra 1 func khác để validate
move ra 1 func khác để validate
move ra 1 func khác để set, set cứng
device.Language = langVi
move ra 1 func khác để set, set cứng
device.Language = langVi
ko cần check userID là mongo id, ko empty là được
ko cần check userID là mongo id, ko empty là được
bỏ cái này
bỏ cái này
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
done
đoạn này + đoạn device id iszero, viết thành 1 func khác
isDeviceIDExisted
trả về booleanđoạn này + đoạn device id iszero, viết thành 1 func khác
isDeviceIDExisted
trả về booleandone
done