generated from Java-2025Fall/final-vibevault-template
61 lines
3.0 KiB
Plaintext
61 lines
3.0 KiB
Plaintext
package com.vibevault.service;
|
|
|
|
import com.vibevault.dto.PlaylistDTO;
|
|
import com.vibevault.dto.SongCreateDTO;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 姝屽崟鏈嶅姟鎺ュ彛
|
|
* 瀹氫箟姝屽崟鐩稿叧鐨勪笟鍔℃搷浣? */
|
|
public interface PlaylistService {
|
|
|
|
/**
|
|
* 鑾峰彇鎵€鏈夋瓕鍗? */
|
|
List<PlaylistDTO> 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<PlaylistDTO> searchPlaylists(String keyword);
|
|
|
|
/**
|
|
* [Advanced] 澶嶅埗姝屽崟
|
|
*/
|
|
PlaylistDTO copyPlaylist(Long playlistId, String newName, String username);
|
|
}
|