From 250e94d7eb1808b63e6cca3931d5adbb4814751e Mon Sep 17 00:00:00 2001 From: chaeda Date: Fri, 29 Mar 2024 22:14:49 +0900 Subject: [PATCH] =?UTF-8?q?cafe-05-end=20=EC=85=8B=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/example/Application.kt | 6 ++-- .../com/example/config/DependencyInjection.kt | 28 +++++++++++++++++++ src/main/kotlin/com/example/config/Routing.kt | 10 +++++-- .../kotlin/com/example/service/MenuService.kt | 17 +++++++++++ 4 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 src/main/kotlin/com/example/config/DependencyInjection.kt create mode 100644 src/main/kotlin/com/example/service/MenuService.kt diff --git a/src/main/kotlin/com/example/Application.kt b/src/main/kotlin/com/example/Application.kt index 3febd04..5d10ce2 100644 --- a/src/main/kotlin/com/example/Application.kt +++ b/src/main/kotlin/com/example/Application.kt @@ -1,6 +1,7 @@ package com.example import com.example.config.configureDatabase +import com.example.config.configureDependencyInjection import com.example.config.configureRouting import com.example.config.configureSerialization import com.example.domain.CafeMenuTable @@ -13,8 +14,7 @@ fun main(args: Array) { fun Application.module() { configureDatabase() + configureDependencyInjection() configureSerialization() - - val cafeMenuRepository = CafeMenuRepository(CafeMenuTable) - configureRouting(cafeMenuRepository) + configureRouting() } diff --git a/src/main/kotlin/com/example/config/DependencyInjection.kt b/src/main/kotlin/com/example/config/DependencyInjection.kt new file mode 100644 index 0000000..9b9ac2c --- /dev/null +++ b/src/main/kotlin/com/example/config/DependencyInjection.kt @@ -0,0 +1,28 @@ +package com.example.config + +import com.example.domain.CafeMenuTable +import com.example.domain.CafeOrderTable +import com.example.domain.CafeUserTable +import com.example.domain.repository.CafeMenuRepository +import com.example.domain.repository.CafeOrderRepository +import com.example.domain.repository.CafeUserRepository +import com.example.service.MenuService +import io.ktor.server.application.* +import org.koin.dsl.module +import org.koin.ktor.plugin.Koin +import org.koin.logger.slf4jLogger + +val appModule = module { + single { CafeMenuRepository(CafeMenuTable) } + single { CafeUserRepository(CafeUserTable) } + single { CafeOrderRepository(CafeOrderTable) } + + single { MenuService(get()) } +} + +fun Application.configureDependencyInjection() { + install(Koin) { + slf4jLogger() + modules(appModule) + } +} diff --git a/src/main/kotlin/com/example/config/Routing.kt b/src/main/kotlin/com/example/config/Routing.kt index 7d2cac7..e23533a 100644 --- a/src/main/kotlin/com/example/config/Routing.kt +++ b/src/main/kotlin/com/example/config/Routing.kt @@ -1,16 +1,20 @@ package com.example.config import com.example.domain.repository.CafeMenuRepository +import com.example.service.MenuService import com.example.shared.CafeOrderStatus import com.example.shared.dto.OrderDto import io.ktor.server.application.* import io.ktor.server.request.* import io.ktor.server.response.* import io.ktor.server.routing.* +import org.koin.ktor.ext.inject import java.time.LocalDateTime -fun Application.configureRouting(cafeMenuRepository: CafeMenuRepository) { +fun Application.configureRouting() { + val menuService by inject() + routing { get("/") { call.respondText("Hello World!") @@ -18,12 +22,12 @@ fun Application.configureRouting(cafeMenuRepository: CafeMenuRepository) { route("/api") { get("/menus") { - val list = cafeMenuRepository.findAll() + val list = menuService.findAll() call.respond(list) } post("/orders") { val request = call.receive() - val selectedMenu = cafeMenuRepository.read(request.menuId)!! + val selectedMenu = menuService.getMenu(request.menuId) val order = OrderDto.DisplayResponse( orderCode = "ordercode1", menuName = selectedMenu.name, diff --git a/src/main/kotlin/com/example/service/MenuService.kt b/src/main/kotlin/com/example/service/MenuService.kt new file mode 100644 index 0000000..b420f28 --- /dev/null +++ b/src/main/kotlin/com/example/service/MenuService.kt @@ -0,0 +1,17 @@ +package com.example.service + +import com.example.domain.model.CafeMenu +import com.example.domain.repository.CafeMenuRepository + +class MenuService( + private val cafeMenuRepository: CafeMenuRepository +) { + fun findAll(): List { + return cafeMenuRepository.findAll() + } + + fun getMenu(id: Long): CafeMenu { + return cafeMenuRepository.read(id) + ?: throw IllegalArgumentException("Menu not found") + } +} \ No newline at end of file