TIL

2024년 9월 20일 TIL (+동적 테이블 사용)

kagan-draca 2024. 9. 20. 23:47

오늘은 동적 테이블 row 생성, row 수정, row 조회, row 삭제 방법을 알게 돼

기존의 여러 테이블  row  생성, row 수정, row 조회, row 삭제를 하나의 함수로 구현된

row 생성, row 수정,  row 조회문, row 삭제로 사용할 수 있게 만들어줬다.

 

const table_findFirst = async (table_name, value) => {
  return await prisma[table_name].findFirst({
    where: { ...value },
  });
};

const table_findMany = async (table_name, value, includeFields) => {
  return await prisma[table_name].findMany({
    where: { ...value },
    //
    ...(includeFields
      ? {
          include: Object.keys(includeFields).reduce((acc, key) => {
            acc[key] = {
              select: includeFields[key], // 특정 컬럼만 선택
            };
            return acc;
          }, {}),
        }
      : {}),
  });
};

const row_update = async (table_name, where_condition, value, tx) => {
  const db = tx ? tx : prisma;
  await db[table_name].update({
    where: { ...where_condition },
    data: {
      ...value,
    },
  });
};

const row_create = async (table_name, value, tx) => {
  const db = tx ? tx : prisma;
  await db[table_name].create({
    data: {
      ...value,
    },
  });
};

const row_delete = async (table_name, where_condition, tx) => {
  const db = tx ? tx : prisma;
  await db[table_name].delete({
    where: { ...where_condition },
  });
};

 

위와 같이 

 

db = tx ? tx. prisma로 transaction 유무를 바탕으로 transaction을 사용하는

row 생성, row 조회, row 수정, row 삭제이면

tx로 트랜젝션을 사용하게 만들고, transaction을 사용하지 않으면 prisma를 사용하게 만들어줬다.

 

그 후

 

db[table_name].테이블 관련 기능

 

으로 모든 테이블에서 기능이 수행될 수 있게 만들어놨다.