Skip to content

Drivine @Transactional() decorator breaks @UsePipes(new ValidationPipe) #49

@myflowpl

Description

@myflowpl

Drivine @transactional() decorator breaks Nest ValidationPipe if used with @UsePies()

import { Controller, Post, Body, ValidationPipe, UsePipes } from '@nestjs/common';
import { Transactional } from '@liberation-data/drivine';
import { SpotSaveRequestDto, SpotSaveDto } from '@slackmap/api/spot/dto';
import { SpotRepository } from '@slackmap/api/spot/data';

@Controller()
export class SpotSaveController {

  constructor(private spotRepository: SpotRepository) {}

  @Post('spot/save')
  @Transactional() // <<< if you comment this out, validation will work
  @UsePipes(new ValidationPipe())
  async process(@Body() data: SpotSaveRequestDto): Promise<SpotSaveDto> {

    const spot = await this.spotRepository.create(data.spot)

    return {spot}
  }
}

It will work if you use it on the method param like:

  async process(@Body(new ValidationPipe()) data: SpotSaveRequestDto): Promise<SpotSaveDto> {

    const spot = await this.spotRepository.create(data.spot)

    return {spot}
  }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions