Prisma TX

agnusdei·2023년 7월 5일
0
post-custom-banner
async applyRequest(id: string, admin: AdminDTO): Promise<InfluencerRequest> {
// Tx: 하나의 작업 단위로 묶기
    return this.prismaService.$transaction(async (tx) => { // create 가 실패한 경우 중괄호 내부 요소 전부 rollback
      const created = await tx.influencerRequest.update({
        data: {
          status: InfluencerRequestStatus.COMPLETED,
          adminId: admin.id,
        },
        where: { id },
      });

	// 위 입력이 성공할 경우 로그 입력
      await tx.log.create({
        data: {
          content: '승인 처리',
          influencerRequest: { connect: { id: created.id } },
          admin: { connect: { id: admin.id } },
        },
      });

      return created;
    });
  }
post-custom-banner

0개의 댓글