MoveServiceImpl.kt
package io.github.lishangbu.avalon.dataset.service.impl
import io.github.lishangbu.avalon.dataset.entity.Move
import io.github.lishangbu.avalon.dataset.entity.dto.MoveSpecification
import io.github.lishangbu.avalon.dataset.entity.dto.MoveView
import io.github.lishangbu.avalon.dataset.entity.dto.SaveMoveInput
import io.github.lishangbu.avalon.dataset.entity.dto.UpdateMoveInput
import io.github.lishangbu.avalon.dataset.repository.MoveRepository
import io.github.lishangbu.avalon.dataset.service.MoveService
import org.babyfish.jimmer.Page
import org.babyfish.jimmer.sql.ast.mutation.SaveMode
import org.springframework.data.domain.Pageable
import org.springframework.stereotype.Service
/** 招式应用服务实现 */
@Service
class MoveServiceImpl(
private val moveRepository: MoveRepository,
) : MoveService {
override fun getPageByCondition(
specification: MoveSpecification,
pageable: Pageable,
): Page<MoveView> = moveRepository.pageViews(specification, pageable)
override fun save(command: SaveMoveInput): MoveView = moveRepository.save(command.toEntity(), SaveMode.INSERT_ONLY).let(::reloadView)
override fun update(command: UpdateMoveInput): MoveView = moveRepository.save(command.toEntity(), SaveMode.UPDATE_ONLY).let(::reloadView)
override fun removeById(id: Long) {
moveRepository.deleteById(id)
}
private fun reloadView(move: Move): MoveView = requireNotNull(moveRepository.loadViewById(move.id)) { "未找到 ID=${move.id} 对应的招式" }
}