Skip to content

Commit 274f377

Browse files
committed
refactor: for big decimal
1 parent c1d32da commit 274f377

File tree

4 files changed

+28
-24
lines changed

4 files changed

+28
-24
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ interface FoodService {
88
suspend fun searchFood(query: String): Result<List<FoodDto>>
99
suspend fun getAllFoods(): Result<List<FoodDto>>
1010
suspend fun getFoodsByCategory(type: String): Result<List<FoodDto>>
11-
suspend fun registerFood(foodDto: FoodDto): Result<Unit>
11+
suspend fun registerFood(foodDto: FoodDto): Result<Boolean>
1212
companion object {
1313
val foodService: FoodService by lazy { FoodServiceImpl() }
1414
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.example.service
22

33
import com.example.dto.FoodDto
44
import com.example.dto.GetOrderWithItemsDto
5-
import com.example.dto.OrderDto
65
import com.example.service.impl.OrderServiceImpl
76
import kotlinx.coroutines.flow.Flow
87
import java.util.*

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

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

33
import com.example.dto.FoodDto
4-
import com.example.fake.foodDtos
54
import com.example.service.DatabaseModule.dbQuery
65
import com.example.service.FoodService
76
import com.example.table.Foods
87
import com.example.util.ext.toFoodDto
8+
import com.example.util.ext.toFoodType
99
import org.jetbrains.exposed.sql.*
1010

1111
class FoodServiceImpl : FoodService {
@@ -29,12 +29,12 @@ class FoodServiceImpl : FoodService {
2929
}
3030

3131
override suspend fun getFoodsByCategory(type: String): Result<List<FoodDto>> = dbQuery {
32-
val foodsByCategory = Foods.select { Foods.category eq type }
32+
val foodsByCategory = Foods.select { Foods.category eq type.toFoodType() }
3333
val foods = foodsByCategory.map { it.toFoodDto() }
3434
foods
3535
}
3636

37-
override suspend fun registerFood(foodDto: FoodDto): Result<Unit> = dbQuery {
37+
override suspend fun registerFood(foodDto: FoodDto): Result<Boolean> = dbQuery {
3838
Foods.insert {
3939
it[name] = foodDto.name
4040
it[description] = foodDto.description
@@ -44,5 +44,6 @@ class FoodServiceImpl : FoodService {
4444
it[category] = foodDto.category
4545
it[imageUrl] = foodDto.imageUrl
4646
}
47+
true
4748
}
4849
}

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

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

3-
import com.example.dto.*
3+
import com.example.dto.FoodDto
4+
import com.example.dto.GetOrderWithItemsDto
5+
import com.example.dto.OrderStatus
46
import com.example.service.DatabaseModule.dbQuery
57
import com.example.service.OrderService
68
import com.example.table.Foods
79
import com.example.table.Items
810
import com.example.table.Orders
911
import com.example.util.ext.toItemDto
1012
import com.example.util.ext.toOrderDto
11-
import kotlinx.coroutines.flow.*
13+
import kotlinx.coroutines.flow.Flow
14+
import kotlinx.coroutines.flow.asFlow
1215
import org.jetbrains.exposed.sql.*
1316
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
1417
import java.util.*
@@ -56,11 +59,11 @@ class OrderServiceImpl : OrderService {
5659
it[Items.orderId] = activeOrder[Orders.id]
5760
it[Items.foodId] = foodDto.id
5861
it[Items.quantity] = quantity
59-
it[Items.price] = foodDto.price.toBigDecimal()
62+
it[Items.price] = foodDto.price
6063
}[Items.id]
6164
}
6265

63-
val totalPrice = activeOrder[Orders.totalPrice] + (foodDto.price * quantity).toBigDecimal()
66+
val totalPrice = activeOrder[Orders.totalPrice] + foodDto.price * quantity.toBigDecimal()
6467
Orders.update({ Orders.id eq activeOrder[Orders.id] }) {
6568
it[Orders.totalPrice] = totalPrice
6669
}
@@ -75,26 +78,27 @@ class OrderServiceImpl : OrderService {
7578
Orders.select { Orders.id eq item[Items.orderId] }.singleOrNull() ?: throw Exception("Order not found")
7679
val newQuantity = item[Items.quantity] + quantity
7780

78-
if (newQuantity < 0) {
79-
Items.deleteWhere { Items.id eq itemId }
80-
81-
val newPrice = order[Orders.totalPrice] - (food[Foods.price] * item[Items.quantity]).toBigDecimal()
82-
Orders.update({ Orders.id eq item[Items.orderId] }) {
83-
it[Orders.totalPrice] = newPrice
81+
when {
82+
newQuantity < 0 -> {
83+
Items.deleteWhere { Items.id eq itemId }
84+
val newPrice = order[Orders.totalPrice] - (food[Foods.price] * item[Items.quantity].toBigDecimal())
85+
Orders.update({ Orders.id eq item[Items.orderId] }) {
86+
it[Orders.totalPrice] = newPrice
87+
}
8488
}
8589

86-
return@dbQuery true
87-
}
90+
else -> {
91+
val newPrice = food[Foods.price] * newQuantity.toBigDecimal()
92+
Items.update({ Items.id eq itemId }) {
93+
it[Items.quantity] = newQuantity
94+
}
8895

89-
val newPrice = food[Foods.price] * newQuantity
90-
Items.update({ Items.id eq itemId }) {
91-
it[Items.quantity] = newQuantity
92-
}
96+
Orders.update({ Orders.id eq item[Items.orderId] }) {
97+
it[Orders.totalPrice] = newPrice
98+
}
9399

94-
Orders.update({ Orders.id eq item[Items.orderId] }) {
95-
it[Orders.totalPrice] = newPrice.toBigDecimal()
100+
}
96101
}
97-
98102
true
99103
}
100104

0 commit comments

Comments
 (0)