File

libs/users/infrastructure/mongoose/src/lib/mongoose-users.repository.ts

Index

Methods

Constructor

constructor(userModel: Model)
Parameters :
Name Type Optional
userModel Model<UserDocument> No

Methods

Async findOneByEmail
findOneByEmail(email: string)
Parameters :
Name Type Optional
email string No
Async findOneById
findOneById(id: string)
Parameters :
Name Type Optional
id string No
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { User, UsersRepository } from '@users/domain';
import { Model, Types } from 'mongoose';

import { UserDocument } from './user.schema';

@Injectable()
export class MongooseUsersRepository implements UsersRepository {
  constructor(
    @InjectModel(UserDocument.name) private userModel: Model<UserDocument>,
  ) {}

  async findOneById(id: string): Promise<User | null> {
    const _id = new Types.ObjectId(id);
    const userDocument = await this.userModel.findOne(_id).exec();

    if (!userDocument) {
      return null;
    }
    
    return new User(
      userDocument.id,
      userDocument.email,
      userDocument.firstName,
      userDocument.lastName,
    );
  }

  async findOneByEmail(email: string): Promise<User | null> {
    const userDocument = await this.userModel.findOne({ email }).exec();

    if (!userDocument) {
      return null;
    }
    return new User(
      userDocument.id,
      userDocument.email,
      userDocument.firstName,
      userDocument.lastName,
    );
  }
}

results matching ""

    No results matching ""