인수 테스트를 할 때, 모든 테스트는 항상 동일한 상태에서 독립적으로 동작되어야 한다. 그래서 백도어 api 로 데이터베이스를 리셋하는 걸 만들어놨지만, 리셋 후에 데이터를 밀어넣는 api 가 동작될 때 내가 의도치 않은 방향으로 동작되었다.
예를 들어, db 를 리셋해주는 api 가 동작되고 난 후 'DELETE FROM TABLE_NAME' 을 하고 다시 테이블이 생성될 때 id 값이 delete 되기 전 테이블의 마지막 번호가 이어진 상태로 생성이 되는 것이었다. 데이터 삭제 전 테이블의 id 가 1~200 이었다면, 데이터들이 삭제된 후 다시 들어갔을 때 첫 번째 컬럼의 id 가 201 부터 시작되었다. 나는 id 값에 따라 1~50 까지는 A 데이터, 51~100 까지는 B 데이터를 넣는 쿼리문을 만들었는데, 이렇게 될 경우 해당 쿼리문이 아예 실행되지 못하는 상태가 발생했다.
그래서 해결방법으로 delete 으로 데이터만 날리기보다는 drop 으로 아예 테이블을 없앤 후 다시 만들도록 했다. 이렇게만 하면 테이블이 없는 상태이기 때문에 데이터를 밀어넣을 수가 없어서 create 으로 다시 테이블도 생성해주었다.
@GetMapping("/reset-database")
public String resetDatabase() {
jdbcTemplate.execute("DROP TABLE content;");
jdbcTemplate.execute("CREATE TABLE content ("
+ "id BIGINT AUTO_INCREMENT, tmdb_id VARCHAR, tmdb_genre_id VARCHAR,"
+ "image_url VARCHAR, kor_title VARCHAR, eng_title VARCHAR,"
+ "release_date VARCHAR, popularity VARCHAR, type VARCHAR,"
+ "platform VARCHAR, description VARCHAR(4000), "
+ "created_at VARCHAR);");
return "Reset completed!";
}
id 컬럼에 있는 auto_increment 는 레코드 값을 자동으로 1씩 증가시켜 주는 예약어이다. 이렇게 해서 리셋은 순조롭게 동작되었다.
그리고 오늘은 메가테라에서 2022년 전체 회고 및 기년회를 진행했다. 기년회란 애자일 컨설팅 대표 김창준님께서 만드신 단어인데, 한 해를 잊는다는 뜻의 망(忘)년회가 아니라 기억한다는 뜻의 기(記)년회 라고 한다. 이 링크를 들어가면 확인할 수 있다.
1기, 2기, 3기가 모두 모여서 한 자리에서 한 해를 돌아보며 각자의 회고와 소회 및 2023년 목표를 발표하는 시간을 가졌는데, 동료 중 한 분이 여러 사람 앞에서 공표하는 것에 힘이 있다고 하신 게 기억이 난다. 매번 혼자 목표를 세우다가 엎어지면 자기 합리화를 하기 일쑤였는데, 이렇게 많은 사람 앞에서 내년 목표로 세운 '개발서적 읽기' 를 내뱉고 나니 반드시 지켜야 할 책임감이 생기고, 내년의 나는 어떤 모습일 지 기대되는 하루였다.
'TIL' 카테고리의 다른 글
Plmography 프로젝트 작업 로그 #20 - 컨텐츠 상세 페이지 작업중..(23.01.01 TIL) (0) | 2023.01.01 |
---|---|
Plmography 프로젝트 작업 로그 #19 - api 로 유튜브 영상 불러오기 (22.12.31 TIL) (0) | 2022.12.31 |
Plmography 프로젝트 작업 로그 #17 - 컨텐츠 상세 페이지 작업 (22.12.29 TIL) (0) | 2022.12.29 |
Plmography 프로젝트 작업 로그 #16 - RestTemplate 으로 api 호출하고 DB 에 저장하기 (22.12.28 TIL) (0) | 2022.12.28 |
Plmography 프로젝트 작업 로그 #15 - AWS S3 이미지 업로드하기 (22.12.27 TIL) (0) | 2022.12.27 |
댓글