smpp-otp/internal/repository/smpp-otp-repository.go

45 lines
843 B
Go

package repository
import (
"fmt"
"math/rand"
"smpp-otp/pkg/lib/logger"
"time"
"github.com/go-redis/redis"
)
type OTPRepository struct {
Client *redis.Client
logger *logger.Loggers
}
func NewOTPRepository(client *redis.Client, logger *logger.Loggers) *OTPRepository {
return &OTPRepository{
Client: client,
logger: logger,
}
}
func GenerateOTP() string {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
otp := fmt.Sprintf("%06d", r.Intn(1000000))
return otp
}
func (r *OTPRepository) SaveOTP(phoneNumber string, otp string) error {
err := r.Client.Watch(func(tx *redis.Tx) error {
err := tx.Set(phoneNumber, otp, 0).Err()
if err != nil {
r.logger.ErrorLogger.Error("Error setting up values into redis: %v", err)
return err
}
return nil
}, phoneNumber)
if err != nil {
return err
}
return nil
}