diff --git a/repositories/user/command_repository.go b/repositories/user/command_repository.go new file mode 100644 index 0000000..155eb6a --- /dev/null +++ b/repositories/user/command_repository.go @@ -0,0 +1,59 @@ +package user_repository + +import ( + "netina/models" + + "gorm.io/gorm" +) + +type UserCommand interface{ + CreateUser(o *models.User) error + UpdateUser(id uint , o *models.User)(*models.User , error) + RemoveUser(id uint)error +} + +type UserCommandRepository struct{ + DB *gorm.DB +} + + +func (r *UserCommandRepository) CreateUser(user *models.User)error{ + if err := r.DB.Create(&user).Error ; err != nil { + return err + } + + return nil +} + + + +func (r *UserCommandRepository) UpdateUser(id uint , user *models.User)(*models.User , error){ + var temp models.User + + if err := r.DB.Where("is_removed = ?" , false).Where("user_id = ?" , id).First(&temp).Error ; err != nil { + return nil , err + } + temp.Name = user.Name + temp.PhoneNumber = user.PhoneNumber + temp.Role_id = user.Role_id + temp.Modified_at = user.Modified_at + temp.Modified_by = user.Modified_by + + if err := r.DB.Save(&temp).Error; err != nil { + return nil , err + } + + return &temp , nil + +} + + + +func (r *UserCommandRepository) RemoveUser(id uint)error{ + var user models.User + if err := r.DB.Where("user_id = ?" , id).Model(&user).Update("is_removed" , true).Error;err != nil { + return err + } + + return nil +} \ No newline at end of file diff --git a/repositories/user/query_repository.go b/repositories/user/query_repository.go new file mode 100644 index 0000000..b3672cf --- /dev/null +++ b/repositories/user/query_repository.go @@ -0,0 +1,35 @@ +package user_repository + +import ( + "netina/models" + + "gorm.io/gorm" +) + + +type UserQuery interface{ + GetUser(id uint)(*models.User , error) +} + +type UserQueryRepository struct{ + DB *gorm.DB +} + + +func (r *UserQueryRepository) GetUser(id uint)(*models.User , error){ + var user models.User + if err := r.DB.Where("is_removed = ?" , false).Where("user_id = ?" , id).First(&user).Error; err != nil { + return nil , err + } + + return &user , nil +} + +func (r *UserQueryRepository) GetUserByPhoneNumber(phoneNumber string)(*models.User , error){ + var user models.User + if err := r.DB.Where("is_removed = ?" , false).Where("phone_number = ?" , phoneNumber).First(&user).Error; err != nil { + return nil , err + } + + return &user , nil +} \ No newline at end of file