Newer
Older
bremer / src / main / kotlin / dao / AudioTagDao.kt
/*
 * Copyright (c) 2023. yo-saito. All Rights Reserved.
 */

package net.piedpiper.bremer.dao

import net.piedpiper.bremer.entity.AudioTagEntity
import net.piedpiper.bremer.utils.DaoUtils
import org.apache.ibatis.annotations.*
import org.springframework.stereotype.Repository

@Repository("bremer.dao.AudioTagDao")
@Mapper
interface AudioTagDao {

    @ResultMap("net.piedpiper.bremer.AudioTagEntity")
    @Select("SELECT * FROM audio_tag WHERE audio_id = #{audioId} AND tag_id = #{tagId}")
    fun findByAudioIdAndTagId(
        @Param("audioId") audioId: Long,
        @Param("tagId") tagId: Long
    ): AudioTagEntity?

    @UpdateProvider(type = Sql::class, method = "insertOne")
    fun insertOne(@Param("entity") entity: AudioTagEntity): Boolean

    @Delete("DELETE FROM audio_tag WHERE audio_id = #{audioId} AND tag_id = #{tagId}")
    fun deleteOneByAudioIdAndTagId(
        @Param("audioId") audioId: Long,
        @Param("tagId") tagId: Long
    ): Boolean

    class Sql {
        companion object {
            @JvmStatic
            @Options(useGeneratedKeys = true, keyColumn = "id")
            fun insertOne(@Param("entity") entity: AudioTagEntity): String =
                DaoUtils.insertOne(entity)
        }
    }
}