add delete and getUserIDByToken method #4
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
| 
					
 | 
			||||
package devicemngmt
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
import (
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	"context"
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	"fmt"
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	"github.com/Selly-Modules/logger"
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	"go.mongodb.org/mongo-driver/bson"
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
)
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
// DeleteDeviceByDeviceID ...
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
func (s Service) DeleteDeviceByDeviceID(deviceID string) error {
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	var (
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		ctx  = context.Background()
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		col  = s.getDeviceCollection()
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		cond = bson.M{
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
			"deviceID": deviceID,
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		}
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	)
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	// Delete
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	if _, err := col.DeleteOne(ctx, cond); err != nil {
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		logger.Error("devicemngt - deleteDeviceByDeviceID", logger.LogData{
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
			"deviceID": deviceID,
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
			"err":      err.Error(),
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		})
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
		return fmt.Errorf("error when delete device: %s", err.Error())
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	}
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
	return nil
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
}
 | 
			
		||||
| 
					
 DeleteDeviceByDeviceID -> DeleteByDeviceID bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa 
			
		done done 
			
		 | 
			||||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		done done 
			
		 | 
			||||
package devicemngmt
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
import (
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	"context"
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	"github.com/Selly-Modules/logger"
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	"go.mongodb.org/mongo-driver/bson"
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
)
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
// GetUserIDByAuthToken ...
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
func (s Service) GetUserIDByAuthToken(authToken string) (userID string) {
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	var (
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		ctx    = context.Background()
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		col    = s.getDeviceCollection()
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		device = Device{}
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		cond   = bson.M{
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
			"authToken": authToken,
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		}
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	)
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	// Find
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	if err := col.FindOne(ctx, cond).Decode(&device); err != nil {
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		logger.Error("devicemngt - getUserIDByAuthToken", logger.LogData{
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
			"authToken": authToken,
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
			"err":       err.Error(),
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		})
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
		return
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	}
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	userID = device.UserID
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
	return
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
}
 | 
			
		||||
| 
					
 action_get_userID.go -> action_get_user_id.go tên file chỉ dùng snake case  action_get_userID.go ->  action_get_user_id.go
tên file chỉ dùng snake case 
			
		done done 
			
		 | 
			||||
DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa
DeleteDeviceByDeviceID -> DeleteByDeviceID
bản chất module này đã là device rồi, nên method không cần có chữ Device ở trong nữa
done
done