File size: 1,376 Bytes
4acc19f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f3abb0d
 
4acc19f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { Injectable } from '@nestjs/common';
import { User, Prisma } from '@prisma/client';
import { PrismaService } from 'src/shared/modules/prisma/prisma.service';
import { UserCorePaginateDto } from './dto/user-core.dto';
import { PrismaBaseRepository } from 'src/shared/libs/prisma-base.repository';
import { UserMessages } from 'src/shared/keys/user.keys';

@Injectable()
export class UserCoreService extends PrismaBaseRepository<
  User,
  UserCorePaginateDto,
  Prisma.UserCreateArgs,
  Prisma.UserUpdateArgs,
  Prisma.UserUpdateManyArgs,
  Prisma.UserFindUniqueArgs,
  Prisma.UserFindFirstArgs,
  Prisma.UserFindManyArgs,
  Prisma.UserDeleteArgs,
  Prisma.UserDeleteManyArgs,
  Prisma.UserCountArgs,
  Prisma.UserUpsertArgs
> {
  constructor(private prismaService: PrismaService) {
    super(prismaService.prisma.user, {
      NOT_FOUND: UserMessages.NOT_FOUND,
      DELETED: UserMessages.DELETED,
    });
  }
  async findByEmail(email: string): Promise<User | null> {
    return this.findFirst({
      where: { email, isDeleted: false },
    });
  }

  async findByPhone(phone: string, code?: string): Promise<User | null> {
    return this.findFirst({
      where: { phone, code, isDeleted: false },
    });
  }

  async findByUniqueId(uniqueId: string): Promise<User | null> {
    return this.findFirst({
      where: { uniqueId, isDeleted: false },
    });
  }
}