fixed unique name for crypto

This commit is contained in:
Kevsl 2024-06-10 20:39:48 +02:00
parent 40ebdde47a
commit 1171e5e13c
2 changed files with 29 additions and 6 deletions

View File

@ -22,20 +22,20 @@ import { BuyCryptoDto } from './dto/buy.crypto.dto';
@ApiTags('crypto') @ApiTags('crypto')
@Controller('crypto') @Controller('crypto')
export class CryptoController { export class CryptoController {
constructor(private promoService: CryptoService) {} constructor(private cryptoService: CryptoService) {}
@Get('/all') @Get('/all')
getAllPromoCodes(@GetUser() user: User) { getAllPromoCodes(@GetUser() user: User) {
return this.promoService.getCryptos(user.id); return this.cryptoService.getCryptos(user.id);
} }
@Get('/search/:name') @Get('/search/:name')
searchCrypto(@GetUser() user: User, @Param('name') cryptoName: string) { searchCrypto(@GetUser() user: User, @Param('name') cryptoName: string) {
return this.promoService.searchCryptos(user.id, cryptoName); return this.cryptoService.searchCryptos(user.id, cryptoName);
} }
@Get('/history/:id') @Get('/history/:id')
CryptoHistory(@GetUser() user: User, @Param('id') cryptoId: string) { CryptoHistory(@GetUser() user: User, @Param('id') cryptoId: string) {
return this.promoService.getCryptoHistory(user.id, cryptoId); return this.cryptoService.getCryptoHistory(user.id, cryptoId);
} }
@HttpCode(HttpStatus.CREATED) @HttpCode(HttpStatus.CREATED)
@ -45,7 +45,7 @@ export class CryptoController {
dto: CryptoDto, dto: CryptoDto,
@GetUser() user: User, @GetUser() user: User,
) { ) {
return this.promoService.createCrypto(user.id, dto); return this.cryptoService.createCrypto(user.id, dto);
} }
@Post('/buy') @Post('/buy')
buyCrypto( buyCrypto(
@ -53,6 +53,21 @@ export class CryptoController {
dto: BuyCryptoDto, dto: BuyCryptoDto,
@GetUser() user: User, @GetUser() user: User,
) { ) {
return this.promoService.buyCrypto(user.id, dto); return this.cryptoService.buyCrypto(user.id, dto);
}
@HttpCode(HttpStatus.OK)
@Patch('/update/:id')
editCryptoById(
@Param('id') cryptoId: string,
@Body() dto: CryptoDto,
@GetUser() user: User,
) {
return this.cryptoService.editCryptoById(user.id, cryptoId, dto);
}
@HttpCode(HttpStatus.NO_CONTENT)
@Delete('/delete/:id')
deleteOfferById(@Param('id') roleId: string, @GetUser() user: User) {
return this.cryptoService.deleteCryptoById(user.id, roleId);
} }
} }

View File

@ -54,6 +54,14 @@ export class CryptoService {
async createCrypto(userId: string, dto: CryptoDto) { async createCrypto(userId: string, dto: CryptoDto) {
await checkuserIsAdmin(userId); await checkuserIsAdmin(userId);
const existingCryptosWithSameName = await this.prisma.crypto.findMany({
where: {
name: dto.name,
},
});
if (existingCryptosWithSameName.length > 0) {
throw new ForbiddenException('Name already taken');
}
const crypto = await this.prisma.crypto.create({ const crypto = await this.prisma.crypto.create({
data: { data: {
name: dto.name, name: dto.name,