Skip to content

Commit cbe4073

Browse files
committed
feat: two new endpoints for get all orders
1 parent 9bdf911 commit cbe4073

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

src/main/kotlin/com/example/service/OrderService.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package com.example.service
22

33
import com.example.dto.FoodDto
4-
import com.example.dto.GetActiveOrderDto
5-
import com.example.dto.ItemDto
4+
import com.example.dto.GetOrderWithItemsDto
65
import com.example.dto.OrderDto
76
import com.example.service.impl.OrderServiceImpl
87
import kotlinx.coroutines.flow.Flow
98
import java.util.*
109

1110
interface OrderService {
12-
suspend fun getActiveOrder(userId: UUID): Result<GetActiveOrderDto>
13-
suspend fun getActiveOrderFlow(userId: UUID): Result<Flow<GetActiveOrderDto>>
11+
suspend fun getActiveOrder(userId: UUID): Result<GetOrderWithItemsDto>
12+
suspend fun getActiveOrderFlow(userId: UUID): Result<Flow<GetOrderWithItemsDto>>
1413
suspend fun addFoodToOrder(userId: UUID, foodDto: FoodDto, quantity: Int): Result<Int>
1514
suspend fun updateItemInOrder(itemId: Int, quantity: Int): Result<Boolean>
1615
suspend fun deleteCurrentOrder(userId: UUID): Result<Boolean>
1716
suspend fun deleteOrder(userId: UUID, orderId: Int): Result<Boolean>
1817
suspend fun completeCurrentOrder(userId: UUID): Result<Boolean>
1918
suspend fun cancelOrder(userId: UUID, orderId: Int): Result<Boolean>
19+
suspend fun getAllOrders(userId: UUID): Result<List<GetOrderWithItemsDto>>
20+
suspend fun getAllOrderFlow(userId: UUID): Result<Flow<GetOrderWithItemsDto>>
2021
companion object {
2122
val orderService: OrderService by lazy { OrderServiceImpl() }
2223
}

src/main/kotlin/com/example/service/impl/FoodServiceImpl.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.example.service.impl
22

33
import com.example.dto.FoodDto
4+
import com.example.fake.foodDtos
45
import com.example.service.DatabaseModule.dbQuery
56
import com.example.service.FoodService
67
import com.example.table.Foods
78
import com.example.util.ext.toFoodDto
8-
import org.jetbrains.exposed.sql.insert
9-
import org.jetbrains.exposed.sql.lowerCase
10-
import org.jetbrains.exposed.sql.select
11-
import org.jetbrains.exposed.sql.selectAll
9+
import org.jetbrains.exposed.sql.*
1210

1311
class FoodServiceImpl : FoodService {
1412
override suspend fun getFoodDetail(foodId: Int): Result<FoodDto> = dbQuery {

src/main/kotlin/com/example/service/impl/OrderServiceImpl.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
1414
import java.util.*
1515

1616
class OrderServiceImpl : OrderService {
17-
override suspend fun getActiveOrder(userId: UUID): Result<GetActiveOrderDto> = dbQuery {
17+
override suspend fun getActiveOrder(userId: UUID): Result<GetOrderWithItemsDto> = dbQuery {
1818
val order = Orders.select {
1919
(Orders.userId eq userId) and (Orders.orderStatus eq OrderStatus.Started)
2020
}.singleOrNull() ?: throw Exception("No active order found")
2121

2222
val items = Items.select { Items.orderId eq order[Orders.id] }.map { it.toItemDto() }
23-
GetActiveOrderDto(order.toOrderDto(), items)
23+
GetOrderWithItemsDto(order.toOrderDto(), items)
2424
}
2525

26-
override suspend fun getActiveOrderFlow(userId: UUID): Result<Flow<GetActiveOrderDto>> = dbQuery {
26+
override suspend fun getActiveOrderFlow(userId: UUID): Result<Flow<GetOrderWithItemsDto>> = dbQuery {
2727
Orders.select {
2828
(Orders.userId eq userId) and (Orders.orderStatus eq OrderStatus.Started)
2929
}.map { order ->
3030
val items = Items.select { Items.orderId eq order[Orders.id] }.map { it.toItemDto() }
31-
GetActiveOrderDto(order.toOrderDto(), items)
31+
GetOrderWithItemsDto(order.toOrderDto(), items)
3232
}.asFlow()
3333
}
3434

@@ -146,6 +146,21 @@ class OrderServiceImpl : OrderService {
146146
true
147147
}
148148

149+
override suspend fun getAllOrders(userId: UUID): Result<List<GetOrderWithItemsDto>> = dbQuery {
150+
val orders = Orders.select { Orders.userId eq userId }.map { order ->
151+
val items = Items.select { Items.orderId eq order[Orders.id] }.map { it.toItemDto() }
152+
GetOrderWithItemsDto(order.toOrderDto(), items)
153+
}
154+
orders
155+
}
156+
157+
override suspend fun getAllOrderFlow(userId: UUID): Result<Flow<GetOrderWithItemsDto>> = dbQuery {
158+
Orders.select { Orders.userId eq userId }.map { order ->
159+
val items = Items.select { Items.orderId eq order[Orders.id] }.map { it.toItemDto() }
160+
GetOrderWithItemsDto(order.toOrderDto(), items)
161+
}.asFlow()
162+
}
163+
149164
private fun createOrder(userId: UUID) {
150165
Orders.insert {
151166
it[Orders.userId] = userId

0 commit comments

Comments
 (0)