package kr.ajou.prcoding.mySpringWeb.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import kr.ajou.prcoding.mySpringWeb.dto.FavoriteMusicRequestDto;
import kr.ajou.prcoding.mySpringWeb.dto.MusicList;
import kr.ajou.prcoding.mySpringWeb.entity.FavoriteMusic;
import kr.ajou.prcoding.mySpringWeb.service.MusicService;

@RestController
@CrossOrigin(origins = "http://localhost:3000") // npm start로 테스트하기 위해 넣음.
public class MyWebController {

    @Autowired
    MusicService service;

    @GetMapping(value = "/musicSearch/{name}")
    public MusicList musicSearchByPath(@PathVariable String name) { // String이 리턴 타입 이었음.
        return service.serachMusic(name);
    }

    @GetMapping(value = "/musicSearch")
    public MusicList musicSearchByParam(@RequestParam(value = "term") String name) {
        return service.serachMusic(name);
    }

    // Get Favorite Music list from Database
    @GetMapping(value = "/likes")
    public List<FavoriteMusic> getLikes() {
        return service.getLikes();
    }

    @PostMapping(value = "/likes")
    public int postLikes(@RequestBody FavoriteMusicRequestDto favorite) {
        return service.saveFavorite(favorite);
    }

    @DeleteMapping(value = "/likes/{id}")
    public void deleteLike(@PathVariable String id){
        service.deleteFavorite(id);
    }
}