Newer
Older
bremer / src / main / kotlin / dao / PlaylistAudioDao.kt
yhornisse on 2 Jul 2023 1 KB add project
/*
 * Copyright (c) 2023. yo-saito. All Rights Reserved.
 */

package net.piedpiper.bremer.dao

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

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

    @InsertProvider(type = Sql::class, method = "insertOne")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    fun insertOne(@Param("entity") entity: PlaylistAudioEntity): Boolean

    @UpdateProvider(type = Sql::class, method = "updateOne")
    fun updateOne(@Param("entity") entity: PlaylistAudioEntity)

    @DeleteProvider(type = Sql::class, method = "deleteAllByIds")
    fun deleteAllByIds(@Param("ids") ids: List<Long>);

    class Sql {
        companion object {
            @JvmStatic
            fun insertOne(@Param("entity") entity: PlaylistAudioEntity): String =
                DaoUtils.insertOne(entity)

            @JvmStatic
            fun updateOne(@Param("entity") entity: PlaylistAudioEntity): String =
                DaoUtils.updateOne(entity)

            @JvmStatic
            fun deleteAllByIds(@Param("ids") ids: List<Long>): String =
                DaoUtils.deleteQuery(PlaylistAudioEntity::class)
                    .WHERE_IN("id", "ids", ids.size)
                    .toString()
        }
    }
}