generator-nest-js-boilerplate
Version:
This generator will help you to build your own Nest.js Mongodb API using TypeScript 4
55 lines (43 loc) • 1.5 kB
text/typescript
import { Types } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { User, UserDocument } from '@v1/users/schemas/users.schema';
import { RolesEnum } from '@decorators/roles.decorator';
import UserDto from './dto/user.dto';
import UsersRepository from './users.repository';
()
export default class UsersService {
constructor(private readonly usersRepository: UsersRepository) {}
public create(user: UserDto): Promise<User> {
return this.usersRepository.create({
...user,
roles: [RolesEnum.USER],
verified: true,
});
}
public getByEmail(email: string) {
return this.usersRepository.getByEmail(email);
}
public async getVerifiedUserByEmail(email: string) {
return this.usersRepository.getVerifiedUserByEmail(email);
}
public getById(id: Types.ObjectId): Promise<User | null> {
return this.usersRepository.getById(id);
}
public getVerifiedUserById(id: Types.ObjectId): Promise<User | null> {
return this.usersRepository.getVerifiedUserById(id);
}
public async createIfDoesNotExist(user: UserDto): Promise<User | null> {
const foundUser = await this.usersRepository.getUnverifiedUserByEmail(user.email);
if (!foundUser) {
return this.usersRepository.create({
...user,
roles: [RolesEnum.USER],
verified: true,
});
}
return foundUser;
}
getAllVerified(): Promise<UserDocument[]> {
return this.usersRepository.getVerifiedUsers();
}
}