GenderServiceImpl.kt

package io.github.lishangbu.avalon.dataset.service.impl

import io.github.lishangbu.avalon.dataset.entity.dto.GenderSpecification
import io.github.lishangbu.avalon.dataset.entity.dto.GenderView
import io.github.lishangbu.avalon.dataset.entity.dto.SaveGenderInput
import io.github.lishangbu.avalon.dataset.entity.dto.UpdateGenderInput
import io.github.lishangbu.avalon.dataset.repository.GenderRepository
import io.github.lishangbu.avalon.dataset.service.GenderService
import org.babyfish.jimmer.sql.ast.mutation.SaveMode
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional

/** 性别服务实现 */
@Service
class GenderServiceImpl(
    /** 性别仓储 */
    private val genderRepository: GenderRepository,
) : GenderService {
    /** 保存性别 */
    @Transactional(rollbackFor = [Exception::class])
    override fun save(command: SaveGenderInput): GenderView = GenderView(genderRepository.save(command.toEntity(), SaveMode.INSERT_ONLY))

    /** 更新性别 */
    @Transactional(rollbackFor = [Exception::class])
    override fun update(command: UpdateGenderInput): GenderView = GenderView(genderRepository.save(command.toEntity(), SaveMode.UPDATE_ONLY))

    /** 按 ID 删除性别 */
    @Transactional(rollbackFor = [Exception::class])
    override fun removeById(id: Long) {
        genderRepository.deleteById(id)
    }

    /** 按条件查询性别列表 */
    override fun listByCondition(specification: GenderSpecification): List<GenderView> = genderRepository.listViews(specification)
}