깜놀하는 해므찌로

Prisma Log Tx Transaction control 프리즈마 로그 트랜잭션 핸들링 예시 본문

IT

Prisma Log Tx Transaction control 프리즈마 로그 트랜잭션 핸들링 예시

agnusdei1207 2023. 8. 28. 14:06
반응형
SMALL
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;
    });
  }

 

반응형
LIST