Mobile number already exists

This commit is contained in:
2026-06-25 21:52:28 +03:30
parent 2c12a0770b
commit 9dbf3c43fa
+20 -2
View File
@@ -1,4 +1,8 @@
import { Injectable, NotFoundException } from '@nestjs/common'; import {
ConflictException,
Injectable,
NotFoundException,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { CreateUserDto } from './dto/create-user.dto'; import { CreateUserDto } from './dto/create-user.dto';
@@ -12,7 +16,8 @@ export class UsersService {
private readonly usersRepository: Repository<User>, private readonly usersRepository: Repository<User>,
) {} ) {}
create(createUserDto: CreateUserDto): Promise<User> { async create(createUserDto: CreateUserDto): Promise<User> {
await this.ensureMobileIsUnique(createUserDto.mobile);
const user = this.usersRepository.create(createUserDto); const user = this.usersRepository.create(createUserDto);
return this.usersRepository.save(user); return this.usersRepository.save(user);
} }
@@ -31,6 +36,9 @@ export class UsersService {
async update(id: string, updateUserDto: UpdateUserDto): Promise<User> { async update(id: string, updateUserDto: UpdateUserDto): Promise<User> {
const user = await this.findOne(id); const user = await this.findOne(id);
if (updateUserDto.mobile) {
await this.ensureMobileIsUnique(updateUserDto.mobile, id);
}
Object.assign(user, updateUserDto); Object.assign(user, updateUserDto);
return this.usersRepository.save(user); return this.usersRepository.save(user);
} }
@@ -39,4 +47,14 @@ export class UsersService {
const user = await this.findOne(id); const user = await this.findOne(id);
await this.usersRepository.remove(user); await this.usersRepository.remove(user);
} }
private async ensureMobileIsUnique(
mobile: string,
excludeUserId?: string,
): Promise<void> {
const existing = await this.usersRepository.findOneBy({ mobile });
if (existing && existing.id !== excludeUserId) {
throw new ConflictException('Mobile number already exists');
}
}
} }