feat: API調整

This commit is contained in:
Keisuke Hirata 2025-12-20 01:48:28 +09:00
parent d27057dc89
commit 0f432b0e89
4 changed files with 7 additions and 8 deletions

View File

@ -100,5 +100,5 @@ interface LandsAPI {
* @param modifier A function that modifies the land's data * @param modifier A function that modifies the land's data
* @return true if the land was modified successfully, false if the land doesn't exist * @return true if the land was modified successfully, false if the land doesn't exist
*/ */
fun modifyLand(name: String, modifier: (LandData) -> Unit): Boolean fun modifyLand(name: String, modifier: (LandData) -> LandData): Boolean
} }

View File

@ -49,7 +49,7 @@ class LandsAPIImpl(private val landService: LandService) : LandsAPI {
return landService.deleteLand(land.id) return landService.deleteLand(land.id)
} }
override fun modifyLand(name: String, modifier: (LandData) -> Unit): Boolean { override fun modifyLand(name: String, modifier: (LandData) -> LandData): Boolean {
val land = landService.findLandsByName(name).firstOrNull() ?: return false val land = landService.findLandsByName(name).firstOrNull() ?: return false
return landService.modifyLand(land.id, modifier) return landService.modifyLand(land.id, modifier)
} }

View File

@ -454,8 +454,9 @@ class LandsCommand(
} }
service.modifyLand(land.id) { data -> service.modifyLand(land.id) { data ->
@Suppress("UNCHECKED_CAST") val mutableParts = data.parts.toMutableList()
action(data.parts as MutableList<Shape>) action(mutableParts)
data.copy(parts = mutableParts)
} }
} }

View File

@ -81,12 +81,10 @@ class LandService(private val database: Database) {
} }
} }
fun modifyLand(id: Int, modifier: (LandData) -> Unit): Boolean { fun modifyLand(id: Int, modifier: (LandData) -> LandData): Boolean {
val land = cache[id] ?: return false val land = cache[id] ?: return false
val newParts = ArrayList(land.data.parts)
val newData = land.data.copy(parts = newParts)
modifier(newData) val newData = modifier(land.data)
transaction(database) { transaction(database) {
LandsTable.update({ LandsTable.id eq id }) { LandsTable.update({ LandsTable.id eq id }) {