diff --git a/backend/build.gradle b/backend/build.gradle index a026c0610..730c35c0c 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -1,38 +1,40 @@ plugins { - id 'java' - id 'org.springframework.boot' version '3.1.1' - id 'io.spring.dependency-management' version '1.1.0' + id 'java' + id 'org.springframework.boot' version '3.1.1' + id 'io.spring.dependency-management' version '1.1.0' } group = 'com.celuveat' version = '0.0.1-SNAPSHOT' java { - sourceCompatibility = '17' + sourceCompatibility = '17' } configurations { - compileOnly { - extendsFrom annotationProcessor - } + compileOnly { + extendsFrom annotationProcessor + } } repositories { - mavenCentral() + mavenCentral() } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-validation' - implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.h2database:h2' - runtimeOnly 'com.mysql:mysql-connector-j' - annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'io.rest-assured:rest-assured:5.3.0' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation 'org.springframework.boot:spring-boot-starter-web' + compileOnly 'org.projectlombok:lombok' + runtimeOnly 'com.h2database:h2' + runtimeOnly 'com.mysql:mysql-connector-j' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'io.rest-assured:rest-assured:5.3.0' + testCompileOnly 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' } tasks.named('test') { - useJUnitPlatform() + useJUnitPlatform() } diff --git a/backend/src/main/java/com/celuveat/CeluveatApplication.java b/backend/src/main/java/com/celuveat/CeluveatApplication.java index 183f1592e..63e448168 100644 --- a/backend/src/main/java/com/celuveat/CeluveatApplication.java +++ b/backend/src/main/java/com/celuveat/CeluveatApplication.java @@ -6,8 +6,8 @@ @SpringBootApplication public class CeluveatApplication { - public static void main(String[] args) { - SpringApplication.run(CeluveatApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(CeluveatApplication.class, args); + } } diff --git a/backend/src/main/java/com/celuveat/restaurant/application/RestaurantQueryService.java b/backend/src/main/java/com/celuveat/restaurant/application/RestaurantQueryService.java new file mode 100644 index 000000000..a8ae8c718 --- /dev/null +++ b/backend/src/main/java/com/celuveat/restaurant/application/RestaurantQueryService.java @@ -0,0 +1,62 @@ +package com.celuveat.restaurant.application; + +import static java.util.stream.Collectors.groupingBy; + +import com.celuveat.celeb.domain.Celeb; +import com.celuveat.restaurant.application.dto.RestaurantQueryResponse; +import com.celuveat.restaurant.domain.Restaurant; +import com.celuveat.restaurant.domain.RestaurantImage; +import com.celuveat.restaurant.domain.RestaurantImageRepository; +import com.celuveat.video.domain.Video; +import com.celuveat.video.domain.VideoRepository; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class RestaurantQueryService { + + private final RestaurantImageRepository restaurantImageRepository; + private final VideoRepository videoRepository; + + public List findAll() { + Map> celebs = restaurantCelebsMap(); + Map> images = restaurantImagesMap(); + return images.keySet().stream() + .map(restaurant -> mapToRestaurantQueryResponse(celebs, images, restaurant)) + .toList(); + } + + private Map> restaurantCelebsMap() { + List