prompt 6
This commit is contained in:
42
internal/repo/email_verification_token_repo.go
Normal file
42
internal/repo/email_verification_token_repo.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"trustcontact/internal/models"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type EmailVerificationTokenRepo struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewEmailVerificationTokenRepo(db *gorm.DB) *EmailVerificationTokenRepo {
|
||||
return &EmailVerificationTokenRepo{db: db}
|
||||
}
|
||||
|
||||
func (r *EmailVerificationTokenRepo) Create(token *models.EmailVerificationToken) error {
|
||||
return r.db.Create(token).Error
|
||||
}
|
||||
|
||||
func (r *EmailVerificationTokenRepo) FindValidByHash(tokenHash string, now time.Time) (*models.EmailVerificationToken, error) {
|
||||
var token models.EmailVerificationToken
|
||||
err := r.db.Where("token_hash = ? AND expires_at > ?", tokenHash, now).First(&token).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &token, nil
|
||||
}
|
||||
|
||||
func (r *EmailVerificationTokenRepo) DeleteByID(id uint) error {
|
||||
return r.db.Delete(&models.EmailVerificationToken{}, id).Error
|
||||
}
|
||||
|
||||
func (r *EmailVerificationTokenRepo) DeleteByUserID(userID uint) error {
|
||||
return r.db.Where("user_id = ?", userID).Delete(&models.EmailVerificationToken{}).Error
|
||||
}
|
||||
42
internal/repo/password_reset_token_repo.go
Normal file
42
internal/repo/password_reset_token_repo.go
Normal file
@@ -0,0 +1,42 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"trustcontact/internal/models"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type PasswordResetTokenRepo struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewPasswordResetTokenRepo(db *gorm.DB) *PasswordResetTokenRepo {
|
||||
return &PasswordResetTokenRepo{db: db}
|
||||
}
|
||||
|
||||
func (r *PasswordResetTokenRepo) Create(token *models.PasswordResetToken) error {
|
||||
return r.db.Create(token).Error
|
||||
}
|
||||
|
||||
func (r *PasswordResetTokenRepo) FindValidByHash(tokenHash string, now time.Time) (*models.PasswordResetToken, error) {
|
||||
var token models.PasswordResetToken
|
||||
err := r.db.Where("token_hash = ? AND expires_at > ?", tokenHash, now).First(&token).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &token, nil
|
||||
}
|
||||
|
||||
func (r *PasswordResetTokenRepo) DeleteByID(id uint) error {
|
||||
return r.db.Delete(&models.PasswordResetToken{}, id).Error
|
||||
}
|
||||
|
||||
func (r *PasswordResetTokenRepo) DeleteByUserID(userID uint) error {
|
||||
return r.db.Where("user_id = ?", userID).Delete(&models.PasswordResetToken{}).Error
|
||||
}
|
||||
@@ -27,3 +27,31 @@ func (r *UserRepo) FindByID(id uint) (*models.User, error) {
|
||||
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (r *UserRepo) FindByEmail(email string) (*models.User, error) {
|
||||
var user models.User
|
||||
if err := r.db.Where("email = ?", email).First(&user).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (r *UserRepo) Create(user *models.User) error {
|
||||
return r.db.Create(user).Error
|
||||
}
|
||||
|
||||
func (r *UserRepo) SetEmailVerified(userID uint, verified bool) error {
|
||||
return r.db.Model(&models.User{}).
|
||||
Where("id = ?", userID).
|
||||
Update("email_verified", verified).Error
|
||||
}
|
||||
|
||||
func (r *UserRepo) UpdatePasswordHash(userID uint, passwordHash string) error {
|
||||
return r.db.Model(&models.User{}).
|
||||
Where("id = ?", userID).
|
||||
Update("password_hash", passwordHash).Error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user