[JavaScript] CRUD 편

최예닮·2022년 11월 20일
0
post-thumbnail

오늘은 어제에 이어 내가 맡은 CRUD에 대해 나열하는 시간을 가져 보겠다.

우리는 화상으로 할 수 있는 면접 시스템이기 때문에 면접을 예약할 수 있는 CRUD가 필요하다.

기업 회원이 면접을 예약할 수 있는 와이어 프레임이다.

이걸 통해 우선 어떤 API를 설계 할 수 있을지 고민을 해보았다.

request 

-req.body = 
 {
"interviewTopic" : "어떤 주제에 대한 면접인지",
"interviewTime" : "면접 시작 시간과 끝나는 시간",
"reservationDate" : "면접 년월일"
}

-response =
  
success
stauts(201)
{
"interviewTopic" : "어떤 주제에 대한 면접인지",
"interviewTime" : "면접 시작 시간과 끝나는 시간",
"reservationDate" : "면접 년월일"
}

err
stauts(404)
{
(error.message)
}

정도로 생각하고 API를 짜 보았다. 아직 스키마가 짜여진게 아무것도 없기 때문에 API를 만들었지만 뭔가 음... 뭔가 너무 허전하네....
안되겠다. 프론트에서 면접부분을 담당한 담당자분이랑 이야기해서 제대로 짜봐야겠다 !

O O 님 !! 혹시 지금 시간 괜찮으신가요 ~??


그리고 프론트 팀원분과 이야기를 했는데 생각보다 긴시간 이야기하며 스키마를 짰고 꽤 깊고 상세하게 작성하게 되었다. 그 스키마 내용을 공유해보겠다.

const 기업별_면접일정 = [
  {
    기업명: "팀스파르타",
    면접: [
      {
        // 자동 생성
        interviewId: "12123saqw123",
        createdAt: "2022-11-11 00:00:00 GMP",
        updatedAt: "2022-11-11 00:00:00 GMP",

        // 면접 예약: req: "__"로 표기
        __interviewManager: "김르탄",
        __interviewTime: {
          start: "2022-11-11 00:00:00 GMP",
          end: "2022-11-11 00:00:00 GMP",
        },
        __interviewTopic:
          "2022년 웹개발 프론트엔드 주니어 (1~2년차) 3차 공개채용 면접(1차)",
        __interviewOption: {
          onMuted: true,
        },

        // 신규 면접 생성 시, default 값
        interviewDone: false, // 진행 예정 면접과 이미 진행된 면접을 구분하기 위함
        interviewUrl: {
          isDone: false, // isDone이 true가 되면 링크가 활성화(접속 가능)되게 한다.
          url: "${url}", // 활성화되지 않았으나 접속할 경우, 에러메세지 송출
        },
        interviewCancelMessage: "", // "면접 취소에 대한 상세한 사유 작성"
        // 면접취소: "면접자의 개인 사정으로 인해 해당 면접이 취소됨",
        interviewMembers: {
          interviewer: [],
          common: [],
        }, // 처음에 null 값이나, 면접 진행 간 참석한 사람(id값 비교)을 객체로 넣어준다.
        // 참석자: {
        //   면접관: [김르탄, 김파탄], // 만일 여러면의 면접관이 들어올 경우, 면접관 배열에 push()
        //   면접자: [홍길동1234, 김철수1324, 박혜리2222], // 면접자의 이름+핸드폰 번호 뒷자리 4개로 작성
        // }
      },
    ],
  },
];

후후 이정도면 충분하겠죠 ?!!!

음 근데....와.... CRUD라서 쉽게 생각했는데... 생각보다 할게 너무너무 많구나 ^_^ 아이 신나

자.... 우리 시작해봅시다...

어... 어라 ? 아 맞다....지금 기업회원가입이랑 미들웨어가 없어서 ... res.locals 를 받아올 수 없네... 데헷 ⭐️

회원가입 파트한 팀원에게 한번 여쭤보았다.

O O 님!!!


혹시... 기업 회원가입 언제쯤 가능하실까요...? 헤헤... 토큰값 받아서 테스트 해봐야하는데 혹시.... 언제쯤 가능하실까요...?

(돌아온답변)

예닮님... ㅠㅠㅠ


죄송해요.... 혹시... 괜찮으시다면 테스트용으로 간단하게 만드셔서 하실 수 있을까요 ...? 아직은 시간이 걸릴거 같아서요 쥬륵...😭


아휴 물론이죠 !!! 화이팅입니다 ~!!!!

팀원이 좋다는게 뭐겠는가 ! 협업! 협업 아니겠는가 ?!!! 나는 나의 일을 해야하니까 가볍게 3 layered 안하고 일단 다 때려박아서 테스트 해야징....

그렇게 나는 CRUD 장인처럼 순식간에 만들어내고 미들웨어도 팍팍 파송송 계란탁 ! 하여 테스트를 빠르게 진행하게 되었다. (훗날... 가볍게 생각했던 이 문제가 경로 문제로 번질줄은... 그 아무도 알지 못하였다고 한다....)

routes/reservation.routes

const express = require("express");
const router = express.Router();
const authCompanyMiddleware = require("../middleware/company_auth");

const ReservationController = require("../controller/reservation.controller");
const reservationController = new ReservationController();

router.post("/reservation", authCompanyMiddleware, reservationController.postReservation);

module.exports = router;

우선 3 레이어드로 나눠야하니까... 저렇게 Class 로 추상화하여 Instance로 실체화를 하였다.

그리고 어디보자... 이제 차근차근 작성해보면 되겠네...

3레이어드.... 내일 이시간에 우리 다시 나눠보자고 ...!

<다음화 예고>

돌아온 3분할 !!! TO BE CONTINUED !!

profile
산을 오르려고 하는데 이제 주차장에 막 주차한 초보개발자

0개의 댓글