오늘의 코드
address.repository.js 업데이트로 수정했습니다.
import { prisma } from './../utils/prisma/index.js';
class AddressRepository {
#orm;
constructor(orm) {
this.#orm = orm;
}
// 주소 생성
createAddress = async ({ address, addressName, userId }) => {
return await this.#orm.address.create({
data: {
userId,
address,
addressName,
},
});
};
// 주소 조회
getAllAddress = async () => {
return await this.#orm.address.findMany();
};
// 주소 수정
updateAddress = async ({ addressId, address, addressName }) => {
console.log(addressId);
return await this.#orm.address.update({
where: {
addressId,
},
data: {
address: address,
addressName: addressName,
},
});
};
// 주소 삭제
deleteAddress = async ({ addressId }) => {
return await this.#orm.address.delete({
where: { addressId },
});
};
// 주소 찾기
findUnique = async (addressId) => {
return await this.#orm.address.findUnique({ where: { addressId } });
};
// 유저 찾기
findUser = async (userId) => {
return await this.#orm.user.findUnique({
where: { userId },
});
};
// 메인 주소 설정
setMainAddress = async ({ addressId, userId }) => {
// 1. 기존 메인 주소 비활성화
await this.#orm.address.updateMany({
where: { userId, mainAddress: true },
data: { mainAddress: false },
});
// 2. 지정된 주소를 메인 주소로 설정
return await this.#orm.address.update({
where: { addressId },
data: { mainAddress: true },
});
};
// Repository 메서드: 특정 사용자의 mainAddress가 true인 주소들을 조회
getMainAddresses = async (userId) => {
return await this.#orm.address.findMany({
where: {
userId, // 특정 사용자
mainAddress: true, // mainAddress가 true인 항목만
},
});
};
// 특정 사용자의 모든 주소 조회
getAllAddressesByUserId = async (userId) => {
return await this.#orm.address.findMany({
where: { userId },
});
};
}
export default new AddressRepository(prisma);
AddressRepository는 데이터베이스와 상호작용하는 클래스이다.#orm)를 선언하여 외부에서 접근하지 못하게 설정했다.constructor(orm) {
this.#orm = orm;
}주소 생성 (createAddress)
userId, address, addressName을 받아 새로운 주소를 데이터베이스에 추가한다.createAddress = async ({ address, addressName, userId }) => {
return await this.#orm.address.create({
data: {
userId,
address,
addressName,
},
});
};
주소 조회 (getAllAddress)
getAllAddress = async () => {
return await this.#orm.address.findMany();
};
주소 수정 (updateAddress)
addressId를 기준으로 해당 주소의 내용을 수정한다.updateAddress = async ({ addressId, address, addressName }) => {
return await this.#orm.address.update({
where: { addressId },
data: { address, addressName },
});
};
주소 삭제 (deleteAddress)
addressId로 특정 주소를 삭제한다.deleteAddress = async ({ addressId }) => {
return await this.#orm.address.delete({
where: { addressId },
});
};
주소 찾기 (findUnique)
addressId를 통해 특정 주소를 조회한다.findUnique = async (addressId) => {
return await this.#orm.address.findUnique({ where: { addressId } });
};
유저 찾기 (findUser)
userId로 특정 유저 정보를 조회한다.findUser = async (userId) => {
return await this.#orm.user.findUnique({
where: { userId },
});
};
create: 데이터를 생성한다.findMany: 여러 데이터를 조회한다.update: 데이터를 수정한다.delete: 데이터를 삭제한다.findUnique: 특정 데이터를 조회한다.#를 이용해 클래스 내부에서만 접근할 수 있도록 설정.this 컨텍스트가 유지되도록 사용.try-catch 블록을 추가하여 안정성을 높이는 것이 필요하다.앞으로 이 구조를 활용해 API 구현 및 확장된 기능을 추가할 계획입니다.