38 lines
789 B
Go
38 lines
789 B
Go
package repository
|
|
|
|
import (
|
|
"codeword/internal/models"
|
|
"context"
|
|
"github.com/go-redis/redis/v8"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type Deps struct {
|
|
Mdb *mongo.Collection
|
|
Rdb *redis.Client
|
|
}
|
|
|
|
type UserRepository struct {
|
|
mdb *mongo.Collection
|
|
}
|
|
|
|
func NewUserRepository(deps Deps) *UserRepository {
|
|
|
|
return &UserRepository{mdb: deps.Mdb}
|
|
}
|
|
|
|
// ищем пользователя по мейлу в коллекции users
|
|
func (r *UserRepository) FindByEmail(ctx context.Context, email string) (*models.User, error) {
|
|
var user models.User
|
|
|
|
err := r.mdb.FindOne(ctx, bson.M{"login": email}).Decode(&user)
|
|
if err != nil {
|
|
if err == mongo.ErrNoDocuments {
|
|
return nil, nil
|
|
}
|
|
return nil, ErrPromoUserNotFound
|
|
}
|
|
return &user, nil
|
|
}
|