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].테이블 관련 기능
으로 모든 테이블에서 기능이 수행될 수 있게 만들어놨다.