와글앱 서버 깃 레포지터리입니다.
우선은 default branch인 develop branch에 업로드하기 => 역할 분배 전까지는 이 규칙 고수 역할 분배 이후: feature/"특성"/"세부 특성" 이렇게 브랜치 이름 명명해서 진행하기
++ 보안 관련해서는 11/20 이후에 고려하기, 앱구현이 우선.
> npm run server
src
|_ index.js
|_ /api // controller layer
|_ /config // env 변수들
|_ /services // service layer
|_ /models // data access layer
|_ /scripts // 기타 script
|_ /test // test code
- "* SECTION TOPIC"
- "(NONE) NORMAL EXPLANATION"
- "? ISSUE/QUERY"
- "! FIXME"
- "TODO TODO"
node: v14.15.0 npm: 6.14.8
- db에 저장
Restaurant table에 data instance insert
=> return rest-id 해주기
Menu table에 data instance insert
=> return menu-id 해주기
- 우선 storage에 직접 업로드(비디오, 사진) (20일 이후: 자동으로 올리는 로직 구현)
-
썸네일:
버켓- waggle-thumbnails 이름- 무조건 가져 온 rest-id와 동일하게 저장해야 함. 단, 확장자는 아마 jpg. -
메뉴 이미지: 버켓- waggle-menus 이름- 무조건 가져 온 menu-id와 동일하게 저장해야 함.
-
비디오:
버켓- waggle-videos
이름- 무조건 가져 온 rest-id와 동일하게 저장해야 함. 단, 확장자는 아마 mp4.
- 클라이언트에서 본인 파일로 저장
-
썸네일:
로그인 시 secure store에 access_key, secret_key 저장해두고 서버 get으로 받았던 rest-name=object_name, bucket_name=waggle-thumbnail 가져와서 assets/thummbnails/에 저장해두기 (이때 async 사용) -
비디오:
로그인 시 secure store에 access_key, secret_key 저장해두고 서버 get으로 받았던 est-name=object_name, bucket_name=waggle-video으로 가져와서 assets/video/에 저장해두기.. 얼마나 느려질 지는 나도 모르겠음.
++ front end에서 아직 덜한 부분들
- 공유하기(비디오 공유)
- 비디오 스크린, 타임라인?(eject 이후에 가능한 걸로 사료됨)
- 담은 메뉴 총합 계산하는 것하기
post할 때 주의사항: 리스트로 묶어서 post 불가.
user/register POST
header = {}
data = {e-mail: “, pw: “”, phone: “”, sex: “”, birth: “”, name: ""}
response = {token: “token”}
SignupScreen
user/login POST
header = {} // 빈 헤더
data = {user_id: “”, pw: “”}
response = {token: “token”,
info: { name: “”, phone_num: “”}
// crypto-js로 암호화해 주기: 이게 얼마나 효과가 있는 지,,,
}
LoginScreen에서 state id, pw에 해당하는 데이터 주고
refresh token 가져오기(maybe)
user/profile GET
header = {token: “token”}
response = {
name: “”,
email: “”,
pw: “”,
phone: “phon_num”,
birth: “”,
sex: “<F/M>”,
}
처음 EditIndoScreen 렌더할 때 조회할 수 있는 유저 정보에 해당.
user/profile PUT
header = {token: “token”}
params = { change: “<id/email/pw/phone_num/birth/sex>”}
data = {
// 바뀐 데이터만 집어넣기
}
response = {token: “token”}
EditInfoScreen에서 바뀐 유저 데이터 전송할 때. DB table에서는 token으로 찾은 user 테이블의 user instance의 정보 수정.
main/video GET
header = {token: “”}
data = {
video: ""
}
VideoScreen에서 video와 timeline에 해당.
main/menu GET
header = {}
params = {
ordered: <true/false>,
// true: ReviewScreen에서의 http request, false: 장바구니 화면에서의 http request
rest_id: “rest-id”,
}
response = [
{id: <순번>, menu_id: “<db: menu-id>”, name: “비빔밥”, photo: , type: <main/side>},
{id: <순번>, menu_id: “<db: menu-id>”, name: “고기”, photo: , type: <main/side>},
...
]
// response data 리스트로 주는 거 가능한 지 실험해 보기
BasketScreen에서 main_menu, side_menu에,
ReviewScreen에서 orderedMenuData에 해당.
main/thumbnails GET
header = {token: “”} // 빈 헤더
response = {name: “”, heart_filled: “”, photo: <object storage get url?>}
HomeMainScreen에서 imageDatas로 해당, 여기서 fetch 추가해서 쓸 예정
event/coupon POST
header = {token: }
data = {
coupon: {id: , due: , used: , issuedDate: , type: },
coupon_menu: [
// 이전 Basket Screen에서 받은 menu_id 살려서
{ menu-id: , type: <main/side> }
{ menu-id: , type: <main/side> }
]
OrderScreen에서 주문하기 버튼 눌렀을 때, 그리고
StamptoCouponScreen에서 쿠폰 발급받기 버튼 눌렀을 때
event/coupon GET
header: {token: “user-token”}
params: {} // 빈 params
response: [
// 생각하기: 스탬프 완료쿠폰에서 review_able은?
{
coupon_id: <db 내 coupon_id>,
rest-name: “”,
type: “<G/S>”,
// G: 일반(general), S: 스탬프(stamp)
content: [“menu1”, “menu2”, “menu3”],
// 객체 배열 아닌 str 배열도 전달 가능한 지 알아봐야 함
usable: <true/false>,
// 당연히 usable 다 true 여야 함
review_able: <true/false>,
useDate:
},
...
]
CouponsScreen에서 couponDatas에 해당.
event/coupon PUT
header: {token: “user-token”}
// 여기에 remove도 추가(쿠폰 우측상단의 X 표시)
data: {
coupon_id: ,
used: <true/false>,
usedDate:
}
response: {
coupon: {
used: <true/false>,
usedDate: ,
},
// success 뭐 이런 걸 추가할 거면 하기
}
OrderScreen에서 mainArray, sideArray에 해당
event/stamp/box GET
header: { token: }
response = [
{rest-id: “”, rest-name: “”, stbox-id: “stbox-id”, stamp-num: },
{rest-id: “”, rest-name: “”, stbox-id: “stbox-id”, stamp-num: }
…
]
StampboxScreen에서 stamp box들 조회
event/stamp/detail GET
header= { token: }
params= { stbox-id: }
response = [
{date: },
{date: },
…
]
StamptoCouponScreen에서 stamp들 조회
event/review POST
header = {token: “token”}
data = [
{menu_id: <menu_id>, starPoint: <int형>, saltReview: <int형>, amountReview: <int형>, otherReview: <int형>},
{menu_id: <menu_id>, starPoint: <int형>, saltReview: <int형>, amountReview: <int형>, otherReview: <int형>},
…
]
ReviewScreen에서 bottom buttond에 해당하는 <눈송>슐랭 평가완료 버튼 누를 때 호출(onPress일 때)
++ ISSUE: 서버에서 stamp delete 언제할 지 생각하기