63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func (s *Store) CreateOtp(ctx context.Context, otp domain.Otp) error {
|
|
return s.queries.CreateOtp(ctx, dbgen.CreateOtpParams{
|
|
SentTo: otp.SentTo,
|
|
Medium: string(otp.Medium),
|
|
OtpFor: string(otp.For),
|
|
Otp: otp.Otp,
|
|
ExpiresAt: pgtype.Timestamptz{
|
|
Time: otp.ExpiresAt,
|
|
Valid: true,
|
|
},
|
|
CreatedAt: pgtype.Timestamptz{
|
|
Time: otp.CreatedAt,
|
|
Valid: true,
|
|
},
|
|
})
|
|
}
|
|
func (s *Store) GetOtp(ctx context.Context, sentTo string, sentfor domain.OtpFor, medium domain.OtpMedium) (domain.Otp, error) {
|
|
row, err := s.queries.GetOtp(ctx, dbgen.GetOtpParams{
|
|
SentTo: sentTo,
|
|
Medium: string(medium),
|
|
OtpFor: string(sentfor),
|
|
})
|
|
if err != nil {
|
|
fmt.Printf("OTP REPO error: %v sentTo: %v, medium: %v, otpFor: %v\n", err, sentTo, medium, sentfor)
|
|
if err == sql.ErrNoRows {
|
|
return domain.Otp{}, domain.ErrOtpNotFound
|
|
}
|
|
return domain.Otp{}, err
|
|
}
|
|
return domain.Otp{
|
|
ID: row.ID,
|
|
SentTo: row.SentTo,
|
|
Medium: domain.OtpMedium(row.Medium),
|
|
For: domain.OtpFor(row.OtpFor),
|
|
Otp: row.Otp,
|
|
Used: row.Used,
|
|
UsedAt: row.UsedAt.Time,
|
|
CreatedAt: row.CreatedAt.Time,
|
|
ExpiresAt: row.ExpiresAt.Time,
|
|
}, nil
|
|
}
|
|
func (s *Store) MarkOtpAsUsed(ctx context.Context, otp domain.Otp) error {
|
|
return s.queries.MarkOtpAsUsed(ctx, dbgen.MarkOtpAsUsedParams{
|
|
ID: otp.ID,
|
|
UsedAt: pgtype.Timestamptz{
|
|
Time: otp.UsedAt,
|
|
Valid: true,
|
|
},
|
|
})
|
|
}
|