6
6
7
7
import org .springdoc .core .annotations .ParameterObject ;
8
8
import org .springframework .data .domain .Page ;
9
- import org .springframework .data .domain .PageRequest ;
10
9
import org .springframework .http .MediaType ;
11
10
import org .springframework .http .ResponseEntity ;
12
11
import org .springframework .security .core .annotation .AuthenticationPrincipal ;
31
30
import com .ajou .hertz .domain .instrument .dto .request .CreateNewBassGuitarRequest ;
32
31
import com .ajou .hertz .domain .instrument .dto .request .CreateNewEffectorRequest ;
33
32
import com .ajou .hertz .domain .instrument .dto .request .CreateNewElectricGuitarRequest ;
33
+ import com .ajou .hertz .domain .instrument .dto .request .InstrumentFilterConditions ;
34
34
import com .ajou .hertz .domain .instrument .dto .response .AcousticAndClassicGuitarResponse ;
35
35
import com .ajou .hertz .domain .instrument .dto .response .AmplifierResponse ;
36
36
import com .ajou .hertz .domain .instrument .dto .response .AudioEquipmentResponse ;
@@ -62,7 +62,7 @@ public class InstrumentController {
62
62
description = "악기 종류와 상관 없이 전체 매물 목록을 조회합니다."
63
63
)
64
64
@ GetMapping (headers = API_VERSION_HEADER_NAME + "=" + 1 )
65
- public Page <InstrumentSummaryResponse > findInstruments (
65
+ public Page <InstrumentSummaryResponse > findInstrumentsV1 (
66
66
@ Parameter (
67
67
description = "페이지 번호. 0부터 시작합니다." ,
68
68
example = "0"
@@ -76,10 +76,154 @@ public Page<InstrumentSummaryResponse> findInstruments(
76
76
) @ RequestParam InstrumentSortOption sort
77
77
) {
78
78
return instrumentQueryService
79
- .findInstruments (PageRequest . of ( page , size , sort . toSort ()) )
79
+ .findInstruments (page , size , sort )
80
80
.map (InstrumentSummaryResponse ::from );
81
81
}
82
82
83
+ @ Operation (
84
+ summary = "일렉 기타 매물 목록 조회" ,
85
+ description = "일렉 기타 매물 목록을 조회합니다."
86
+ )
87
+ @ GetMapping (value = "/electric-guitars" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
88
+ public Page <ElectricGuitarResponse > findElectricGuitarsV1 (
89
+ @ Parameter (
90
+ description = "페이지 번호. 0부터 시작합니다." ,
91
+ example = "0"
92
+ ) @ RequestParam int page ,
93
+ @ Parameter (
94
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
95
+ example = "10"
96
+ ) @ RequestParam int size ,
97
+ @ Parameter (
98
+ description = "정렬 기준"
99
+ ) @ RequestParam InstrumentSortOption sort ,
100
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
101
+ ) {
102
+ return instrumentQueryService
103
+ .findElectricGuitars (page , size , sort , filterConditions )
104
+ .map (ElectricGuitarResponse ::from );
105
+ }
106
+
107
+ @ Operation (
108
+ summary = "베이스 기타 매물 목록 조회" ,
109
+ description = "베이스 기타 매물 목록을 조회합니다."
110
+ )
111
+ @ GetMapping (value = "/bass-guitars" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
112
+ public Page <BassGuitarResponse > findBassGuitarsV1 (
113
+ @ Parameter (
114
+ description = "페이지 번호. 0부터 시작합니다." ,
115
+ example = "0"
116
+ ) @ RequestParam int page ,
117
+ @ Parameter (
118
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
119
+ example = "10"
120
+ ) @ RequestParam int size ,
121
+ @ Parameter (
122
+ description = "정렬 기준"
123
+ ) @ RequestParam InstrumentSortOption sort ,
124
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
125
+ ) {
126
+ return instrumentQueryService
127
+ .findBassGuitars (page , size , sort , filterConditions )
128
+ .map (BassGuitarResponse ::from );
129
+ }
130
+
131
+ @ Operation (
132
+ summary = "어쿠스틱&클래식 기타 매물 목록 조회" ,
133
+ description = "어쿠스틱&클래식 기타 매물 목록을 조회합니다."
134
+ )
135
+ @ GetMapping (value = "/acoustic-and-classic-guitars" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
136
+ public Page <AcousticAndClassicGuitarResponse > findAcousticAndClassicGuitarsV1 (
137
+ @ Parameter (
138
+ description = "페이지 번호. 0부터 시작합니다." ,
139
+ example = "0"
140
+ ) @ RequestParam int page ,
141
+ @ Parameter (
142
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
143
+ example = "10"
144
+ ) @ RequestParam int size ,
145
+ @ Parameter (
146
+ description = "정렬 기준"
147
+ ) @ RequestParam InstrumentSortOption sort ,
148
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
149
+ ) {
150
+ return instrumentQueryService
151
+ .findAcousticAndClassicGuitars (page , size , sort , filterConditions )
152
+ .map (AcousticAndClassicGuitarResponse ::from );
153
+ }
154
+
155
+ @ Operation (
156
+ summary = "이펙터 매물 목록 조회" ,
157
+ description = "이펙터 매물 목록을 조회합니다."
158
+ )
159
+ @ GetMapping (value = "/effectors" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
160
+ public Page <EffectorResponse > findEffectorsV1 (
161
+ @ Parameter (
162
+ description = "페이지 번호. 0부터 시작합니다." ,
163
+ example = "0"
164
+ ) @ RequestParam int page ,
165
+ @ Parameter (
166
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
167
+ example = "10"
168
+ ) @ RequestParam int size ,
169
+ @ Parameter (
170
+ description = "정렬 기준"
171
+ ) @ RequestParam InstrumentSortOption sort ,
172
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
173
+ ) {
174
+ return instrumentQueryService
175
+ .findEffectors (page , size , sort , filterConditions )
176
+ .map (EffectorResponse ::from );
177
+ }
178
+
179
+ @ Operation (
180
+ summary = "앰프 매물 목록 조회" ,
181
+ description = "앰프 매물 목록을 조회합니다."
182
+ )
183
+ @ GetMapping (value = "/amplifiers" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
184
+ public Page <AmplifierResponse > findAmplifiersV1 (
185
+ @ Parameter (
186
+ description = "페이지 번호. 0부터 시작합니다." ,
187
+ example = "0"
188
+ ) @ RequestParam int page ,
189
+ @ Parameter (
190
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
191
+ example = "10"
192
+ ) @ RequestParam int size ,
193
+ @ Parameter (
194
+ description = "정렬 기준"
195
+ ) @ RequestParam InstrumentSortOption sort ,
196
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
197
+ ) {
198
+ return instrumentQueryService
199
+ .findAmplifiers (page , size , sort , filterConditions )
200
+ .map (AmplifierResponse ::from );
201
+ }
202
+
203
+ @ Operation (
204
+ summary = "음향 장비 매물 목록 조회" ,
205
+ description = "음향 장비 매물 목록을 조회합니다."
206
+ )
207
+ @ GetMapping (value = "/audio-equipments" , headers = API_VERSION_HEADER_NAME + "=" + 1 )
208
+ public Page <AudioEquipmentResponse > findAudioEquipmentsV1 (
209
+ @ Parameter (
210
+ description = "페이지 번호. 0부터 시작합니다." ,
211
+ example = "0"
212
+ ) @ RequestParam int page ,
213
+ @ Parameter (
214
+ description = "페이지 크기. 한 페이지에 포함될 데이터의 개수를 의미합니다." ,
215
+ example = "10"
216
+ ) @ RequestParam int size ,
217
+ @ Parameter (
218
+ description = "정렬 기준"
219
+ ) @ RequestParam InstrumentSortOption sort ,
220
+ @ ParameterObject @ Valid @ ModelAttribute InstrumentFilterConditions filterConditions
221
+ ) {
222
+ return instrumentQueryService
223
+ .findAudioEquipments (page , size , sort , filterConditions )
224
+ .map (AudioEquipmentResponse ::from );
225
+ }
226
+
83
227
@ Operation (
84
228
summary = "일렉기타 매물 등록" ,
85
229
description = """
0 commit comments