add searchString

This commit is contained in:
Hoang 2021-11-09 12:26:51 +07:00
parent 4b4d16fd58
commit c055635ace
4 changed files with 29 additions and 6 deletions

View File

@ -48,6 +48,7 @@ func (payload CreateOptions) newUser() (result User, err error) {
return User{ return User{
ID: mongodb.NewObjectID(), ID: mongodb.NewObjectID(),
Name: payload.Name, Name: payload.Name,
SearchString: getSearchString(payload.Name, payload.Phone, payload.Email),
Phone: payload.Phone, Phone: payload.Phone,
Email: payload.Email, Email: payload.Email,
HashedPassword: hashPassword(payload.Password), HashedPassword: hashPassword(payload.Password),

View File

@ -45,6 +45,7 @@ func (s Service) UpdateByUserID(userID string, payload UpdateOptions) error {
updateData := bson.M{ updateData := bson.M{
"$set": bson.M{ "$set": bson.M{
"name": payload.Name, "name": payload.Name,
"searchString": getSearchString(payload.Name, payload.Phone, payload.Email),
"phone": payload.Phone, "phone": payload.Phone,
"email": payload.Email, "email": payload.Email,
"roleId": roleID, "roleId": roleID,

View File

@ -1,6 +1,9 @@
package usermngmt package usermngmt
import ( import (
"fmt"
"github.com/Selly-Modules/mongodb"
"golang.org/x/crypto/bcrypt" "golang.org/x/crypto/bcrypt"
) )
@ -13,3 +16,20 @@ func checkPasswordHash(password, hash string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
return err == nil return err == nil
} }
func getSearchString(fieldList ...string) string {
var (
searchList = make([]interface{}, 0)
format = ""
)
for i, value := range fieldList {
searchList = append(searchList, mongodb.NonAccentVietnamese(value))
if i == 0 {
format += "%s"
continue
}
format += " %s"
}
return fmt.Sprintf(format, searchList...)
}

View File

@ -10,6 +10,7 @@ import (
type User struct { type User struct {
ID primitive.ObjectID `bson:"_id" json:"_id"` ID primitive.ObjectID `bson:"_id" json:"_id"`
Name string `bson:"name" json:"name"` Name string `bson:"name" json:"name"`
SearchString string `bson:"searchString" json:"-"`
Phone string `bson:"phone" json:"phone"` // unique Phone string `bson:"phone" json:"phone"` // unique
Email string `bson:"email" json:"email"` // unique Email string `bson:"email" json:"email"` // unique
HashedPassword string `bson:"hashedPassword" json:"-"` HashedPassword string `bson:"hashedPassword" json:"-"`