package com.vibevault.service; import com.vibevault.dto.PlaylistDTO; import com.vibevault.dto.SongCreateDTO; import java.util.List; /** * 姝屽崟鏈嶅姟鎺ュ彛 * 瀹氫箟姝屽崟鐩稿叧鐨勪笟鍔℃搷浣? */ public interface PlaylistService { /** * 鑾峰彇鎵€鏈夋瓕鍗? */ List getAllPlaylists(); /** * 鏍规嵁 ID 鑾峰彇姝屽崟 * @throws com.vibevault.exception.ResourceNotFoundException 濡傛灉姝屽崟涓嶅瓨鍦? */ PlaylistDTO getPlaylistById(Long id); /** * 鍒涘缓鏂版瓕鍗? * @param name 姝屽崟鍚嶇О * @param ownerUsername 鎵€鏈夎€呯敤鎴峰悕 */ PlaylistDTO createPlaylist(String name, String ownerUsername); /** * 鍚戞瓕鍗曟坊鍔犳瓕鏇? * @param playlistId 姝屽崟 ID * @param song 姝屾洸淇℃伅 * @param username 褰撳墠鐢ㄦ埛鍚嶏紙鐢ㄤ簬鏉冮檺妫€鏌ワ級 */ PlaylistDTO addSongToPlaylist(Long playlistId, SongCreateDTO song, String username); /** * 浠庢瓕鍗曠Щ闄ゆ瓕鏇? * @param playlistId 姝屽崟 ID * @param songId 姝屾洸 ID * @param username 褰撳墠鐢ㄦ埛鍚嶏紙鐢ㄤ簬鏉冮檺妫€鏌ワ級 */ void removeSongFromPlaylist(Long playlistId, Long songId, String username); /** * 鍒犻櫎姝屽崟 * @param playlistId 姝屽崟 ID * @param username 褰撳墠鐢ㄦ埛鍚嶏紙鐢ㄤ簬鏉冮檺妫€鏌ワ級 */ void deletePlaylist(Long playlistId, String username); // ========== Advanced 鏂规硶锛堥€夊仛锛?========= /** * [Advanced] 鎸夊叧閿瓧鎼滅储姝屽崟 */ List searchPlaylists(String keyword); /** * [Advanced] 澶嶅埗姝屽崟 */ PlaylistDTO copyPlaylist(Long playlistId, String newName, String username); }