48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package userstore
|
|
|
|
import (
|
|
"git.keks.cloud/kekskurse/miniauth/pkg/utils"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func (s Store) MailAdd(mail string, userID int64, primary bool) error {
|
|
query := "INSERT INTO mail (mail, user_id, validation_code, is_primary) VALUES (?, ?, ?, ?);"
|
|
log := s.log.With().Str("func", "MailAdd").Int64("user_id", userID).Str("mail", mail).Bool("primary", primary).Str("query", query).Logger()
|
|
|
|
validatenCode := uuid.NewString()
|
|
_, err := s.db.Exec(query, mail, userID, validatenCode, primary)
|
|
if err != nil {
|
|
return utils.WrapError(ErrCantExecuteQuery, err, log)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s Store) MailCheckExists(email string) (bool, error) {
|
|
query := "SELECT COUNT(*) FROM mail WHERE mail = ?"
|
|
log := s.log.With().Str("func", "MailCheckExists").Str("email", email).Str("query", query).Logger()
|
|
|
|
var count int
|
|
err := s.db.QueryRow(query, email).Scan(&count)
|
|
if err != nil {
|
|
return true, utils.WrapError(ErrCantExecuteQuery, err, log)
|
|
}
|
|
|
|
if count > 0 {
|
|
return true, nil
|
|
}
|
|
|
|
return false, nil
|
|
}
|
|
|
|
func (s Store) MailRemove(email string) error {
|
|
query := "DELETE FROM mail WHERE mail = ?"
|
|
log := s.log.With().Str("func", "MailRemove").Str("email", email).Str("query", query).Logger()
|
|
|
|
_, err := s.db.Exec(query, email)
|
|
if err != nil {
|
|
return utils.WrapError(ErrCantExecuteQuery, err, log)
|
|
}
|
|
|
|
return nil
|
|
}
|