package cn.reghao.tnb.file.app.zdisk.db.mapper;

import cn.reghao.jutil.jdk.web.db.BaseMapper;
import cn.reghao.jutil.jdk.web.db.Page;
import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum;
import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;
import java.util.List;

/**
 * @author reghao
 * @date 2025-09-01 14:42:17
 */
@Mapper
public interface DiskAlbumMapper extends BaseMapper<DiskAlbum> {
    void saveAlbumFiles(List<DiskAlbumFile> list);
    void updateDiskAlbum(@Param("albumId") long albumId,
                         @Param("coverFileId") String coverFileId,
                         @Param("num") int num);
    void updateDiskAlbumNum(@Param("albumId") long albumId, @Param("num") int num);
    void updateDiskAlbumCover(@Param("albumId") long albumId, @Param("coverFileId") String coverFileId);
    void updateDiskAlbumFilePos(@Param("id") int id, @Param("pos") int pos);
    void deleteDiskAlbumFiles(@Param("albumId") long albumId,
                              @Param("sha256sumList") Collection<String> sha256sumList);

    DiskAlbum findDiskAlbum(long albumId);
    List<DiskAlbum> findByCreateBy(long createBy);
    List<DiskAlbumFile> findDiskAlbumFiles(long albumId);
    List<DiskAlbumFile> findDiskAlbumFileList(@Param("albumId") long albumId,
                                           @Param("sha256sumList") Collection<String> sha256sumList);
    int countDiskAlbumFile(long albumId);
    List<DiskAlbumFile> findDiskAlbumFileByPage(@Param("page") Page page, @Param("albumId") long albumId);
}
