본문 바로가기
TIL

Plmography 프로젝트 작업 로그 #18 - DB 쿼리문 + 기년회 (22.12.30 TIL)

by winteringg 2022. 12. 30.

인수 테스트를 할 때, 모든 테스트는 항상 동일한 상태에서 독립적으로 동작되어야 한다. 그래서 백도어 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년 목표를 발표하는 시간을 가졌는데, 동료 중 한 분이 여러 사람 앞에서 공표하는 것에 힘이 있다고 하신 게 기억이 난다. 매번 혼자 목표를 세우다가 엎어지면 자기 합리화를 하기 일쑤였는데, 이렇게 많은 사람 앞에서 내년 목표로 세운 '개발서적 읽기' 를 내뱉고 나니 반드시 지켜야 할 책임감이 생기고, 내년의 나는 어떤 모습일 지 기대되는 하루였다.

댓글