AddEmail adds a new email address to given user. It returns ErrEmailAlreadyUsed if the email has been verified by another user.
(ctx context.Context, userID int64, email string, isActivated bool)
| 1020 | // AddEmail adds a new email address to given user. It returns |
| 1021 | // ErrEmailAlreadyUsed if the email has been verified by another user. |
| 1022 | func (s *UsersStore) AddEmail(ctx context.Context, userID int64, email string, isActivated bool) error { |
| 1023 | email = strings.ToLower(strings.TrimSpace(email)) |
| 1024 | _, err := s.GetByEmail(ctx, email) |
| 1025 | if err == nil { |
| 1026 | return ErrEmailAlreadyUsed{ |
| 1027 | args: errutil.Args{ |
| 1028 | "email": email, |
| 1029 | }, |
| 1030 | } |
| 1031 | } else if !IsErrUserNotExist(err) { |
| 1032 | return errors.Wrap(err, "check user by email") |
| 1033 | } |
| 1034 | |
| 1035 | return s.db.WithContext(ctx).Create( |
| 1036 | &EmailAddress{ |
| 1037 | UserID: userID, |
| 1038 | Email: email, |
| 1039 | IsActivated: isActivated, |
| 1040 | }, |
| 1041 | ).Error |
| 1042 | } |
| 1043 | |
| 1044 | var _ errutil.NotFound = (*ErrEmailNotExist)(nil) |
| 1045 |