Darayo Backend Convention - DDD-Community/DDD-12-Darayo-Backend GitHub Wiki
festival/
βββ domain/ # λλ©μΈ λ‘μ§ μ λ° (μν°ν°, μλΉμ€), μμμ± λ‘μ§
β βββ constant/ # enum classλ€
β βββ entity/ # JPA Entity λ± λΉμ¦λμ€ λͺ¨λΈ
β βββ repository/ # JPA Repository λλ QueryDSL λ± λ°μ΄ν° μ μ₯/μ‘°ν ꡬν체
β βββ service/ # λλ©μΈ μλΉμ€ (Controllerκ° μ§μ μμ‘΄, UseCase μν μ λμ ν¨)
β
βββ infra/ # κΈ°μ μΈλΆ μ¬ν
β βββ fcm/ # fcm
β βββ ext-library/ # κΈ°ν μΈλΆ μ’
μμ±
β
βββ presentation/ # μΈλΆ μμ²μ λ°λ κ³μΈ΅ (REST API ONLY)
βββ artist/
β βββ ArtistController.java
β βββ exchanges/ # μμ²/μλ΅ DTO
βββ performance/
βββ PerformanceController.java
βββ exchanges/
- Record νμ νμ©
- μμ² νμ μ Req, μλ΅ νμ μ Res
- Inner Recordλ‘ νμν νμ μλ΅ νμ μ μ
μμ² μμ)
public record EditReservationInfoReq(
// ....
) { }
μλ΅ μμ)
public record UserGetTimetableRes(
// ...
List<UserTimetableArtistRes> artists
) {
public record UserTimetableArtistRes(
//...
) { }
}
νλΌλ―Έν°κ° μ¬λ¬κ° μλ κ²½μ°
@RestController
@RequestMapping("/api/admin/timetable")
@RequiredArgsConstructor
public class TimetableAdminController {
private final TimetableManagement timetableManagement;
@PutMapping("/{timetableId}")
public ResponseEntity<Void> editTimetable(
@PathVariable("timetableId") Long timetableId,
@RequestBody EditTimetableReq req
) {
/** ꡬνλΆ **/
return ResponseEntity.ok().build();
}
}
νλΌλ―Έν°κ° νλλ§ μλ κ²½μ°
@GetMapping("/{festivalId}/timetable")
public ResponseEntity<BaseResponse<List<UserGetTimetableRes>>> getPerformancesForFestival(
@PathVariable Long festivalId
) {
List<UserGetTimetableRes> data = timetableManagement.getUserGetTimetables(festivalId);
return ResponseEntity.ok(BaseResponse.success(data));
}