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