Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
196 commits
Select commit Hold shift + click to select a range
5e94c68
[FEAT] 소셜 로그인 API 구현 (#2)
mzeong Jan 18, 2024
ab24a7e
Feat: team, member 테이블 설계
mzeong Jan 20, 2024
b7a633f
[FEAT] 종목별 나의 팀 조회 API 구현 (#5)
mzeong Jan 24, 2024
8792b6a
[FEAT] 팀 상세 조회 API 구현 (#7)
mzeong Jan 24, 2024
dc50b6e
[FEAT] 기존 팀 추가 API 구현 (#9)
mzeong Jan 24, 2024
74fa8de
[FEAT] 새로운 팀 생성 API 구현 (#12)
mzeong Jan 25, 2024
ec7a52c
[FEAT] 날짜별 게스트 모집글 조회 API 구현 (#14)
mzeong Jan 25, 2024
b8aa307
[FEAT] 팀 수정 API 구현 (#16)
mzeong Jan 25, 2024
8004317
Feat: 성별, 연령대, 레벨을 숫자에서 문자열로 변환하도록 readGuestingResponseDTO 수정 #11
mzeong Jan 25, 2024
8d30855
[FEAT] 커뮤니티 글 목록 조회 API 구현 (#18)
mzeong Jan 26, 2024
4c8bfdf
[FEAT] 커뮤니티 글 저장과 저장 취소 API 구현 (#20)
mzeong Jan 26, 2024
fcd9dae
[FEAT] 커뮤니티 글 본문 조회 API 구현 (#22)
mzeong Jan 26, 2024
f061665
Fix: readCommunityPostResponseDTO에 comment id 추가 #21
mzeong Jan 26, 2024
895d7a8
[FEAT] 커뮤니티 댓글 추가 조회 API 구현 (#24)
mzeong Jan 26, 2024
12a9f08
[FEAT] 커뮤니티 글 작성 API 구현 (#26)
mzeong Jan 26, 2024
7adc797
[FEAT] 커뮤니티 댓글 작성 API 구현 (#28)
mzeong Jan 26, 2024
4027a93
[FEAT] 내가 쓴 글 조회 API 구현 (#31)
mzeong Jan 27, 2024
c74bb3a
Refactor: 커뮤니티 글 목록 조회 API 구현 #17
mzeong Jan 27, 2024
70d30e9
[FEAT] 저장한 글 조회 API 구현 (#33)
mzeong Jan 27, 2024
30dd9c3
Refactor: 커뮤니티 글 저장과 저장 취소 API 구현 #19
mzeong Jan 27, 2024
8e5df97
FEAT) 게스트 모집글 지역 필터링 API 구현 #15
ujiiin Jan 27, 2024
d1a6798
FEAT) 게스트 모집글 성별 필터링 API 구현 #35
ujiiin Jan 27, 2024
5d98604
FEAT) 게스트 모집글 레벨 필터링 API 구현 #36
ujiiin Jan 27, 2024
6ff87d3
Refactor: 카카오 로그인 API 구현 #1
mzeong Jan 28, 2024
345ddef
Feat: 내가 쓴 글 조회 API 엔드포인트의 URI 변경 #29
mzeong Jan 28, 2024
6b0fec5
Refactor: 커뮤니티 글 본문 조회 API 구현 #21
mzeong Jan 28, 2024
0f873d9
Refactor: 커뮤니티 글 작성 API 구현 #25
mzeong Jan 28, 2024
de99759
Refactor: 커뮤니티 댓글 작성 API 구현 #27
mzeong Jan 28, 2024
9c90acb
Refactor: 커뮤니티 댓글 추가 조회 API 구현 #23
mzeong Jan 28, 2024
87de543
[FEAT] 날짜별 연습경기 모집글 조회, 연습경기 모집글 필터링(지역, 레벨, 성별) API 구현 (#43)
mzeong Jan 29, 2024
fd9b2c4
[FEAT] 게스트 모집 조회, 신청 API 구현
ujiiin Jan 29, 2024
e6f3669
Refactor: 네이버 로그인 API 구현 #1
mzeong Jan 29, 2024
d361612
[FEAT] 로그아웃 API 구현 (#45)
mzeong Jan 29, 2024
3e23e07
[Feat] 연습경기 신청 가능 팀 목록 조회 #46 (#47)
doeunyy Jan 29, 2024
b0682b2
[FEAT] 연습경기 모집글 상세 조회 API 구현 (#50)
doeunyy Jan 29, 2024
11fc075
[FEAT] 연습경기 모집글 작성 API 구현 (#52)
doeunyy Jan 29, 2024
6f5783e
[FEAT] 연습경기 모집글 수정 API 구현 (#54)
doeunyy Jan 30, 2024
9ac744b
[FEAT] 종목별 선수 정보 수정 API 구현 (#55)
mzeong Jan 30, 2024
c839207
[FEAT] 종목별 선수 정보 조회 API 구현 (#42)
mzeong Jan 30, 2024
25920e9
Fix: 종목별 선수 정보 조회 API 구현 머지 과정에서 중복 코드 제거 #34
mzeong Jan 30, 2024
ae2f15d
Feat: users 라우트, 컨트롤러, 서비스, DAO 타입 지정 및 이름 수정 #34 #49
mzeong Jan 30, 2024
65965e1
[FEAT] 게스트 신청 API 구현 (#57)
mzeong Jan 30, 2024
5195b51
Feat: 날짜별 게스팅 내역 조회 API 구현 커밋 복원 #41
mzeong Jan 30, 2024
41df326
Merge pull request #59 from TiimMate/feature/41
ujiiin Jan 30, 2024
75b5049
Feat: 날짜별 호스팅 내역 조회 API 구현 커밋 복원 #58 (#60)
mzeong Jan 30, 2024
b81092a
Refactor: teams 라우트, 컨트롤러, 서비스, DAO, DTO 타입 지정 및 이름 수정 #3 #4 #6 #13
mzeong Jan 30, 2024
b5fbdba
Refactor: validate 함수에 사용할 수 있도록 post, comment schema 수정 #25 #27
mzeong Jan 30, 2024
4c60e53
Feat: createMemberSchema 생성 #8
mzeong Jan 30, 2024
42b757d
Refactor: validate 함수 사용 가능하도록 game schema 수정 #51 #53 (#64)
doeunyy Jan 30, 2024
2b841d9
[FEAT] 대관정보 글 작성 API 구현 (#67)
doeunyy Jan 30, 2024
455b3be
Revert "[FEAT] 대관정보 글 작성 API 구현" (#69)
doeunyy Jan 30, 2024
059dcd5
[FEAT] 대관정보 글 작성 API 구현 (#70)
doeunyy Jan 30, 2024
1cbfe90
[FEAT] 대관정보 글 목록 조회 API 구현 (#71)
doeunyy Jan 30, 2024
cee3d71
Refactor: 구글 로그인 API 구현 #1
mzeong Jan 31, 2024
26432c6
[FEAT] 연습경기 신청 API 구현 (#74)
doeunyy Jan 31, 2024
a970a55
[FEAT] 호스팅 신청팀 목록 조회 (#76)
doeunyy Feb 1, 2024
1aaddf0
매칭내역 API 구현 (#78)
ujiiin Feb 2, 2024
f59b58f
[FEAT] 신청팀 승인 API 구현 (#80)
doeunyy Feb 2, 2024
f4dcc08
[FEAT] 팀 리뷰 작성 API 구현 (#81)
mzeong Feb 2, 2024
497dee5
Feat: 날아간 코드 복구 #73 (#82)
doeunyy Feb 2, 2024
33a4b62
[FEAT] 게스트 리뷰 작성 API 구현 (#83)
mzeong Feb 3, 2024
ccda506
Refactor: guest, matching API 중 변경된 함수 및 타입 수정 (#85)
ujiiin Feb 3, 2024
2d51903
Merge branch 'develop' into release/1.0.0
mzeong Feb 3, 2024
1eac00a
Fix: 카카오 로그인 KOE010 에러 해결 #91
mzeong Feb 5, 2024
ebd1558
Merge pull request #92 from TiimMate/bugfix/91
mzeong Feb 5, 2024
39a5b0c
Feat: game-DTO 관련 코드 수정
doeunyy Feb 6, 2024
8db9737
Fix) guest schema 추가 및 validate 설정 변경
ujiiin Feb 6, 2024
4837d95
Fix: 종목별 나의 팀 조회 API Schema 변경 #96
mzeong Feb 6, 2024
7884d15
Fix) guest schema 추가 및 validate 설정 변경 #97
ujiiin Feb 6, 2024
802e103
Merge branch 'bugfix/validate-guests-route' of https://github.com/Tii…
ujiiin Feb 6, 2024
7526038
Merge pull request #98 from TiimMate/bugfix/96
doeunyy Feb 6, 2024
4bc98a9
Refactor: game 모델 applyTeamId 필드 삭제 #102
doeunyy Feb 6, 2024
a746799
Merge pull request #104 from TiimMate/refactor/102
mzeong Feb 6, 2024
56dff12
[BUGFIX] 게스트 모집글 작성 및 신청 API 수정 #103
ujiiin Feb 6, 2024
5246369
Refactor: Record를 이용한 Statuses로 변경
mzeong Feb 6, 2024
02103c2
Style: games.dao.ts 파일명 game.dao.ts로 변경
mzeong Feb 6, 2024
3b571b6
Refactor: 의미 없는 주석과 console.log 제거
mzeong Feb 6, 2024
05868b9
Fix: gameId 유효성 검증
mzeong Feb 6, 2024
3d26000
Feat: readGameDetailResponseDTO에 getGender, getAgeGroup 함수 적용
mzeong Feb 6, 2024
6b2e2ed
Merge pull request #94 from TiimMate/bugfix/modify-games-dto
mzeong Feb 6, 2024
e9a9d53
Merge branch 'release/1.0.0' into bugfix/validate-guests-route
ujiiin Feb 6, 2024
6689393
Fix: 게스트 모집글 작성 service 함수 수정 #107
mzeong Feb 6, 2024
832dfb0
[BUGFIX] 게스트 모집글 신청 에러 케이스 추가 #107
ujiiin Feb 6, 2024
622dfa7
[BUGFIX] guest, guest-user dao파일 구분 #110
ujiiin Feb 6, 2024
ef1f9b2
[BUGFIX] 매칭내역 조회 타입 추가 #110
ujiiin Feb 6, 2024
48a6cc0
[BUGFIX] guestUser status constant 추가 #110
ujiiin Feb 6, 2024
a0f40f9
[BUGFIX] 멤버 카운트 함수 추가 #110
ujiiin Feb 6, 2024
c369312
[BUGFIX] 멤버 함수 매칭내역 API에 적용 #110
ujiiin Feb 6, 2024
7341fe5
Fix: fields.ts 파일 내 날아간 코드 복구 #107
mzeong Feb 7, 2024
05d3a23
Fix: 게스트 신청 전 선수 정보 미입력인지 검증 #107
mzeong Feb 7, 2024
779b6d4
Fix: request query가 아닌 DB 조회를 통한 category 사용 #107
mzeong Feb 7, 2024
2c2c581
Merge pull request #107 from TiimMate/bugfix/validate-guests-route
mzeong Feb 7, 2024
18b9ebb
Fix: matchings.dao.ts 파일 42번째 줄 오타 수정 #112
mzeong Feb 7, 2024
348cb33
Merge pull request #113 from TiimMate/bugfix/112
mzeong Feb 7, 2024
4d495bb
Refactor: findTeamPreviewByCategory 함수에서 id도 함께 조회하도록 수정 #109
mzeong Feb 7, 2024
67ec864
Feat: 리뷰 작성 가능한 기한을 시합 시간 이후부터 한 달 동안으로 제한 #88
mzeong Feb 7, 2024
30ddf9b
Merge pull request #114 from TiimMate/refactor/109
doeunyy Feb 7, 2024
b9c3c84
Bugfix: gameApply 모델 추가 및 ORM 적용 #105
doeunyy Feb 7, 2024
a611752
Merge branch 'release/1.0.0' into bugfix/105
mzeong Feb 7, 2024
311b0d5
Merge pull request #117 from TiimMate/bugfix/105
mzeong Feb 7, 2024
f0a9afe
Merge remote-tracking branch 'origin/release/1.0.0' into bugfix/118
doeunyy Feb 7, 2024
1b408be
Bugfix: 신청팀 승인 API 메서드 변경 #118
doeunyy Feb 7, 2024
fc7a0aa
Merge pull request #115 from TiimMate/feature/88
doeunyy Feb 9, 2024
002a613
Bugfix: 연습경기 신청 팀 리더 검증 및 ORM 적용 #121
doeunyy Feb 9, 2024
7836dbd
Merge branch 'bugfix/121' into bugfix/123
doeunyy Feb 9, 2024
2ee4453
Bugfix: games.route.ts 파일에 validate 함수 추가 #123
doeunyy Feb 9, 2024
6d8a6f7
[BUGFIX] main branch pull 중 에러 해결 #103
ujiiin Feb 10, 2024
e52ea58
[BUGFIX] 게스팅 목록 조회 및 신청 에러 해결 #103
ujiiin Feb 10, 2024
3a5799c
[BUGFIX] main branch pull 중 충돌 해결 #110
ujiiin Feb 10, 2024
e6f1e7d
[BUGFIX] 매칭내역 조회 에러 해결 #110
ujiiin Feb 10, 2024
e656223
[REFACTOR] 게스트 목록 조회 API 페이징 추가 #125
ujiiin Feb 10, 2024
bfade08
[REFACTOR] 게스트 목록 조회 API 빠진 파일 추가 #125
ujiiin Feb 10, 2024
dbf8be3
Fix: 게스트 모집글 작성, 수정, 상세 조회, 신청은 로그인된 유저만 가능하도록 수정 #110
mzeong Feb 10, 2024
7c3c78a
Fix: 매칭내역 페이지 내 모든 API는 로그인된 유저만 가능하도록 수정 #110
mzeong Feb 10, 2024
82d12e5
Fix: guests.controller.ts 파일 수정 #110
mzeong Feb 10, 2024
b8d923c
Fix: getTeamDetailForGuesting 함수 수정 #110
mzeong Feb 10, 2024
6c23194
Fix: findMemberInfoByCategory 함수를 통한 멤버 프로필 조회 #110
mzeong Feb 10, 2024
5ca85e9
Style: insertGuestUser로 함수 이름 변경 #110
mzeong Feb 10, 2024
32394d6
Style: 더 이상 사용하지 않는 findMemberInfoByTeamId 함수 제거 #110
mzeong Feb 10, 2024
8d93c83
Comment: addMemberCount 함수에 경고 메세지 추가 #110
mzeong Feb 10, 2024
ddbcd14
Merge pull request #119 from TiimMate/bugfix/118
mzeong Feb 10, 2024
428f814
Fix: 유저(팀장)의 모든 카테고리 게스팅, 호스팅 내역 조회 가능하도록 수정 #110
ujiiin Feb 10, 2024
367ed2e
Fix: 게스트 모집글 수정 API에서 teamId 가져오는 부분 수정 #110
ujiiin Feb 10, 2024
a7fa759
Fix: 날짜별 호스팅 내역 조회 API 수정 #110
mzeong Feb 12, 2024
ae7a33c
Merge branch 'bugfix/110' of https://github.com/TiimMate/TeamMateServ…
mzeong Feb 12, 2024
b4ebdce
Fix: 날짜별 게스팅 내역 조회 API 수정 #110
mzeong Feb 12, 2024
d88c063
Merge pull request #111 from TiimMate/bugfix/110
mzeong Feb 12, 2024
f97c0ad
Merge branch 'release/1.0.0' of https://github.com/TiimMate/TeamMateS…
ujiiin Feb 12, 2024
991609d
Fix: level type string->int 수정 #125
ujiiin Feb 12, 2024
8d22d98
Refactor: getGuestingById 함수 변경 #128
ujiiin Feb 12, 2024
6e344bb
[FEAT] 게스트 테이블에 status 필드 추가 #128
ujiiin Feb 12, 2024
0abada2
[FEAT] 게스트 신청 유저수에 따른 Guest.status 값 판별 #128
ujiiin Feb 12, 2024
0092338
Refactor: updateGuestUserStatus 함수 matchings.service -> guests.servic…
ujiiin Feb 12, 2024
7892bd2
Refactor: Guest.status dto에 적용 #128
ujiiin Feb 12, 2024
710e08f
Fix: Guest.status 값 판별 오류 수정 #128
ujiiin Feb 12, 2024
e535fe1
Merge pull request #130 from TiimMate/feature/128
doeunyy Feb 13, 2024
87d459e
Merge branch 'release/1.0.0' into refactor/125
doeunyy Feb 14, 2024
0b3e9d2
Merge pull request #129 from TiimMate/refactor/125
doeunyy Feb 14, 2024
c53e9bf
Refactor: 게스트 모집글 조회 레벨 필터링 API level 범위 수정 #132
ujiiin Feb 14, 2024
6a23560
Refactor: 연습게임 조회 레벨 필터링 API level 범위 수정 #132
ujiiin Feb 14, 2024
6163100
Refactor: getLevelById 함수 사용하는 부분 삭제 #132
ujiiin Feb 14, 2024
b542107
Refactor: defaultLevel 사용하는 부분 삭제 #132
ujiiin Feb 14, 2024
568c70a
Refactor: level.constant.ts 삭제 #132
ujiiin Feb 14, 2024
ff3c446
Feat: 대관정보에 대관일자/대관장소/대관모집상태 추가 #131
doeunyy Feb 14, 2024
e2d6db6
[FEAT] Guest 모델 gameDuration 필드 추가 #133
ujiiin Feb 14, 2024
1893afe
[FEAT] guest 조회, 작성 API에 gameDuration 추가 #133
ujiiin Feb 14, 2024
8e9a481
[FEAT] 매칭내역 조회 API에 gameDuration 추가 #133
ujiiin Feb 14, 2024
38e14c2
Merge pull request #134 from TiimMate/refactor/132
doeunyy Feb 14, 2024
6d0deaf
Merge pull request #137 from TiimMate/feature/133
doeunyy Feb 14, 2024
119306d
Feat: user 테이블에 avatarUrl 필드 추가 #116
mzeong Feb 15, 2024
1c74215
Feat: avatarUrl 필드 타입 수정 #116
mzeong Feb 15, 2024
43e0948
Feat: schema에 avatarUrlField 추가 #116
mzeong Feb 15, 2024
f1ca9ec
Feat: 종목별 선수 정보 조회 API 응답에 avatarUrl 추가 #116
mzeong Feb 15, 2024
f706852
Merge pull request #138 from TiimMate/feature/116
doeunyy Feb 15, 2024
f5df792
Fix: post.dao 불필요한 부분 삭제 #131
ujiiin Feb 15, 2024
b3ee534
Merge branch 'release/1.0.0' into feature/131
ujiiin Feb 15, 2024
c70193a
Merge pull request #135 from TiimMate/feature/131
ujiiin Feb 15, 2024
2802337
Merge remote-tracking branch 'origin/release/1.0.0' into feature/136
doeunyy Feb 15, 2024
6d71896
Feat: 대관정보 글 목록 조회 시 글 내용/모집상태 추가 #136
doeunyy Feb 15, 2024
4f47146
Merge remote-tracking branch 'origin/release/1.0.0' into bugfix/121
doeunyy Feb 15, 2024
fd09983
Merge pull request #124 from TiimMate/bugfix/123
mzeong Feb 15, 2024
bed60cf
Bugfix: 연습경기 신청 에러 수정 #144
doeunyy Feb 17, 2024
f540776
Bugfix: 연습경기 신청 에러 수정 #144
doeunyy Feb 17, 2024
f27a378
Bugfix: 연습경기 신청 가능 팀 조회 엔드포인트 변경 및 API 응답 수정 #146
doeunyy Feb 17, 2024
9174172
Refactor: 서비스 함수 수정 #141
mzeong Feb 17, 2024
8485b12
Refactor: 응답에 유저 아이디, 프로필 사진 포함 #141
mzeong Feb 17, 2024
9bfd14c
Refactor: getTeamDetail 함수에서 Member 테이블 조인 제거 #141
mzeong Feb 17, 2024
c5b0994
Refactor: DTO 수정 #141
mzeong Feb 17, 2024
2f9728f
Feat: 더 이상 사용하지 않는 readMembersInfo 함수 제거 #141
mzeong Feb 17, 2024
4b85bc4
Feat: getTeamDetail 함수에서 초대 코드, 성별, 연령대, 지역, 체육관명 추가로 조회 #141
mzeong Feb 17, 2024
3a8a88b
Refactor: DTO 함수에 MemberInfo 인터페이스 추가 #141
mzeong Feb 17, 2024
7fc3d5f
Refactor: DTO 내에 console.log 제거 #141
mzeong Feb 17, 2024
0579219
Feat: DAO, DTO에 id, height 추가 #140
mzeong Feb 17, 2024
462e39a
Merge pull request #147 from TiimMate/bugfix/146
mzeong Feb 17, 2024
589deb4
Refactor: userId path variable 추가 #150
mzeong Feb 17, 2024
1ba729b
Merge pull request #148 from TiimMate/feature/141
doeunyy Feb 17, 2024
9fe2329
Merge pull request #149 from TiimMate/refactor/140
doeunyy Feb 17, 2024
43789fd
Merge pull request #151 from TiimMate/refactor/150
doeunyy Feb 17, 2024
2a2418b
Merge pull request #145 from TiimMate/bugfix/144
mzeong Feb 17, 2024
ad75fb9
Fix: 엔드포인트 오타 수정 #152
mzeong Feb 17, 2024
9bcc1c1
Merge pull request #153 from TiimMate/bugfix/152
trad-fh Feb 17, 2024
10b7554
[FEAT] 게스트 모집글 조회 API guest.id 추가 #155
ujiiin Feb 17, 2024
f3aea88
[FEAT] 게스트 상세 조회 API guest.description 추가 #155
ujiiin Feb 17, 2024
32e082c
Feat: 연습경기 API 게임 소요시간 필드 추가 및 연습경기 목록 조회 id 추가 #154
doeunyy Feb 17, 2024
4264a0a
Refactor: 연습경기 모집글 상세조회 API 응답 수정 #160
doeunyy Feb 17, 2024
97cf928
Merge branch 'feature/154' into refactor/162
doeunyy Feb 17, 2024
ad2183e
Merge branch 'refactor/160' into refactor/162
doeunyy Feb 17, 2024
0dbdc2e
Refactor: 연습경기 모집글 상세조회 수정 #162
doeunyy Feb 17, 2024
f0959e4
[FEAT] 게스트 상세조회, 호스팅 신청자 조회 avatarUrl 추가 #143
ujiiin Feb 18, 2024
6185004
Merge pull request #139 from TiimMate/feature/136
mzeong Feb 18, 2024
ed78c5f
Merge pull request #156 from TiimMate/feat/155
mzeong Feb 18, 2024
99f88ef
Merge pull request #159 from TiimMate/feature/154
mzeong Feb 18, 2024
0a4f80e
Merge pull request #161 from TiimMate/refactor/160
mzeong Feb 18, 2024
42c49a9
Merge branch 'release/1.0.0' into refactor/162
mzeong Feb 18, 2024
4d16a56
Merge pull request #163 from TiimMate/refactor/162
mzeong Feb 18, 2024
7605db3
Merge pull request #164 from TiimMate/feat/143
mzeong Feb 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-var-requires": "warn",
"@typescript-eslint/no-unsafe-call": "warn"
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-return": "warn"
}
}
296 changes: 214 additions & 82 deletions package-lock.json

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "tiimmate-backend",
"name": "teammate-backend",
"version": "0.0.1",
"description": "",
"main": "app.ts",
Expand All @@ -15,13 +15,18 @@
"express": "^4.18.2",
"express-async-handler": "^1.2.0",
"http-status-codes": "^2.3.0",
"jsonwebtoken": "^9.0.2",
"mysql2": "^3.7.0",
"redaxios": "^0.5.1",
"sequelize": "^6.35.2",
"sequelize-cli": "^6.6.2"
"sequelize-cli": "^6.6.2",
"uuid": "^9.0.1",
"zod": "^3.22.4"
},
"devDependencies": {
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/jsonwebtoken": "^9.0.5",
"@types/node": "^20.11.0",
"@typescript-eslint/eslint-plugin": "^6.18.1",
"@typescript-eslint/parser": "^6.18.1",
Expand Down
21 changes: 19 additions & 2 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@ import { response } from "./config/response";
import { BaseError } from "./config/error";
import { status } from "./config/response.status";

// import { authRouter } from "./routes/auth.route";
import { authRouter } from "./routes/auth.route";
import { teamsRouter } from "./routes/teams.route";
import { membersRouter } from "./routes/members.route";
import { gamesRouter } from "./routes/games.route";
import { guestsRouter } from "./routes/guests.route";
import { postsRouter } from "./routes/posts.route";
import { usersRouter } from "./routes/users.route";
import { matchingsRouter } from "./routes/matchings.route";
import { reviewsRouter } from "./routes/reviews.route";

const app = express();

Expand All @@ -27,7 +35,15 @@ app.use(express.static("public"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// app.use("/auth", authRouter);
app.use("/auth", authRouter);
app.use("/teams", teamsRouter);
app.use("/members", membersRouter);
app.use("/games", gamesRouter);
app.use("/guests", guestsRouter);
app.use("/posts", postsRouter);
app.use("/users", usersRouter);
app.use("/matchings", matchingsRouter);
app.use("/reviews", reviewsRouter);

app.use((req: Request, res: Response, next: NextFunction) => {
const err = new BaseError(status.NOT_FOUND);
Expand All @@ -37,6 +53,7 @@ app.use((req: Request, res: Response, next: NextFunction) => {
app.use((err, req: Request, res: Response, next: NextFunction) => {
res.locals.message = err.message;
res.locals.err = process.env.NODE_ENV !== "production" ? err : {};
console.log(err);
const error = err instanceof BaseError ? err : new BaseError(status.INTERNAL_SERVER_ERROR);
res.status(error.data.status).send(response(error.data));
});
Expand Down
4 changes: 2 additions & 2 deletions src/config/error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { Status } from "./response.status";
export class BaseError extends Error {
public data: Status;

constructor(data: Status) {
constructor(data: Status, detail?: any) {
super(data.message);
this.data = data;
this.data = detail ? { ...data, detail } : data;
}
}
194 changes: 194 additions & 0 deletions src/config/response.status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export interface Status {
isSuccess: boolean;
code: number | string;
message: string;
detail?: any;
}

export const status: { [key: string]: Status } = {
Expand All @@ -19,4 +20,197 @@ export const status: { [key: string]: Status } = {
code: "COMMON000",
message: "서버 에러, 관리자에게 문의 바랍니다.",
},
NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "COMMON001",
message: "요청한 페이지를 찾을 수 없습니다. 관리자에게 문의 바랍니다.",
},
MISSING_REQUIRED_FIELDS: {
status: StatusCodes.BAD_REQUEST,
isSuccess: false,
code: "COMMON002",
message: "요청에 필요한 정보가 누락되었습니다.",
},
REQUEST_VALIDATION_ERROR: {
status: StatusCodes.BAD_REQUEST,
isSuccess: false,
code: "COMMON003",
message: "요청이 유효하지 않습니다.",
},

//auth err
MISSING_ACCESS_TOKEN: {
status: StatusCodes.UNAUTHORIZED,
isSuccess: false,
code: "AUTH001",
message: "Access Token이 없습니다.",
},
ACCESS_TOKEN_EXPIRED: {
status: StatusCodes.UNAUTHORIZED,
isSuccess: false,
code: "AUTH002",
message: "Access Token이 만료되었습니다.",
},
ACCESS_TOKEN_NOT_EXPIRED: {
status: StatusCodes.BAD_REQUEST,
isSuccess: false,
code: "AUTH003",
message: "Access Token이 아직 만료되지 않았습니다.",
},
ACCESS_TOKEN_VERIFICATION_FAILED: {
status: StatusCodes.UNAUTHORIZED,
isSuccess: false,
code: "AUTH004",
message: "Access Token 검증에 실패했습니다.",
},
MISSING_REFRESH_TOKEN: {
status: StatusCodes.UNAUTHORIZED,
isSuccess: false,
code: "AUTH005",
message: "Refresh Token이 없습니다.",
},
REFRESH_TOKEN_VERIFICATION_FAILED: {
status: StatusCodes.UNAUTHORIZED,
isSuccess: false,
code: "AUTH006",
message: "Refresh Token 검증에 실패했습니다. 다시 로그인해 주세요.",
},

//team err
NO_JOINABLE_TEAM: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "TEAM001",
message: "해당 초대 코드로 가입할 수 있는 팀이 없습니다.",
},
TEAM_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "TEAM002",
message: "요청한 팀을 찾을 수 없습니다.",
},
TEAM_LEADER_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "TEAM003",
message: "요청한 유저가 팀장인 팀을 찾을 수 없습니다.",
},
TEAM_INFO_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "TEAM004",
message: "팀 정보 입력이 필요합니다.",
},

//member err
ALREADY_JOINED: {
status: StatusCodes.CONFLICT,
isSuccess: false,
code: "MEMBER001",
message: "해당 팀에 이미 가입되어 있습니다.",
},
MEMBER_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "MEMBER002",
message: "멤버를 찾을 수 없습니다.",
},

// guest error
GUEST_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GUESTER001",
message: "게스팅을 찾을 수 없습니다.",
},
GUESTUSER_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GUESTER002",
message: "게스트 신청 유저를 찾을 수 없습니다.",
},
GUESTUSER_ALREADY_EXIST: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GUESTER003",
message: "이미 신청한 게스트 모집글입니다.",
},
ACCESS_DENIED_FOR_GUEST: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GUESTER004",
message: "게스트 수정 권한이 없습니다.",
},
CLOSED_GUEST: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GUESTER005",
message: "마감된 게스트 모집글입니다.",
},

// game error
GAME_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "GAME001",
message: "게임을 찾을 수 없습니다.",
},

//post err
POST_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "POST001",
message: "요청한 글을 찾을 수 없습니다.",
},

//user err
USER_NOT_FOUND: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "USER001",
message: "요청한 유저를 찾을 수 없습니다.",
},

NOT_FILL_USER_PROFILE: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "USER002",
message: "유저 정보가 필요합니다.",
},

//review err
MATCH_ID_REQUIRED: {
status: StatusCodes.BAD_REQUEST,
isSuccess: false,
code: "REVIEW001",
message: "TeamMatchId 또는 GuestMatchId 중 하나가 필요합니다.",
},
NO_REVIEW_TARGET: {
status: StatusCodes.NOT_FOUND,
isSuccess: false,
code: "REVIEW002",
message: "리뷰할 대상이 없습니다.",
},
REVIEW_NOT_CURRENTLY_WRITABLE: {
status: StatusCodes.BAD_REQUEST,
isSuccess: false,
code: "REVIEW003",
message: "리뷰 작성 가능한 시간이 아닙니다.",
},
REVIEW_ALREADY_WRITTEN: {
status: StatusCodes.CONFLICT,
isSuccess: false,
code: "REVIEW004",
message: "이미 리뷰를 작성했습니다.",
},

// game-apply err
GAME_APPLICATION_ALREADY_EXIST: {
status: StatusCodes.CONFLICT,
isSuccess: false,
code: "GAMEAPPLY001",
message: "이미 신청한 연습경기 모집글입니다.",
},
};
4 changes: 3 additions & 1 deletion src/config/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,16 @@ export interface Response {
isSuccess: boolean;
code: number | string;
message: string;
detail?: any;
result?: any;
}

export const response = ({ isSuccess, code, message }: Status, result?: any): Response => {
export const response = ({ isSuccess, code, message, detail }: Status, result?: any): Response => {
return {
isSuccess: isSuccess,
code: code,
message: message,
detail: detail,
result: result,
};
};
13 changes: 13 additions & 0 deletions src/constants/age-group.constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { AgeGroup } from "../types/age-group.enum";

const AgeGroups: Record<AgeGroup, string> = {
[AgeGroup.Teenagers]: "10대",
[AgeGroup.Twenties]: "20대",
[AgeGroup.Thirties]: "30대",
[AgeGroup.Forties]: "40대",
[AgeGroup.FiftiesAndAbove]: "50대 이상~",
};

export const getAgeGroup = (key: AgeGroup): string | undefined => {
return AgeGroups[key];
};
17 changes: 17 additions & 0 deletions src/constants/category.constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Category } from "../types/category.enum";

const Categories: Record<Category, string> = {
[Category.Basketball]: "농구",
[Category.Baseball]: "야구",
[Category.Tennis]: "테니스",
[Category.Soccer]: "축구",
[Category.Futsal]: "풋살",
[Category.Volleyball]: "배구",
[Category.Bowling]: "볼링",
[Category.Badminton]: "배드민턴",
[Category.TableTennis]: "탁구",
};

export const getCategory = (key: Category): string | undefined => {
return Categories[key];
};
19 changes: 19 additions & 0 deletions src/constants/gender.constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Gender } from "../types/gender.enum";

const Genders: Record<Exclude<Gender, Gender.Mixed>, string> = {
[Gender.Female]: "여성",
[Gender.Male]: "남성",
};

const TeamGenders: Record<Gender, string> = {
...Genders,
[Gender.Mixed]: "혼성",
};

export const getGender = (key: Exclude<Gender, Gender.Mixed>): string | undefined => {
return Genders[key];
};

export const getTeamGender = (key: Gender): string | undefined => {
return TeamGenders[key];
};
10 changes: 10 additions & 0 deletions src/constants/guest-status.constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const guestStatus: Record<number, string> = {
0: "미승인",
1: "승인",
};

export const defaultStatus = 0;

export const getGuestUserStatus = (key: number): string | undefined => {
return guestStatus[key];
};
10 changes: 10 additions & 0 deletions src/constants/status.constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const Statuses: Record<number, string> = {
0: "모집 중",
1: "모집 완료",
};

export const defaultStatus = 0;

export const getStatus = (key: number): string | undefined => {
return Statuses[key];
};
Loading