/* * Copyright (c) 2023. yo-saito. All Rights Reserved. */ package net.piedpiper.bremer.controller.api import jakarta.validation.Valid import net.piedpiper.bremer.model.api.PlaylistAudioResponse import net.piedpiper.bremer.model.api.AllPlaylistResponse import net.piedpiper.bremer.model.api.PlaylistRequest import net.piedpiper.bremer.model.api.PlaylistAudioRequest import net.piedpiper.bremer.service.PlaylistService import org.springframework.beans.factory.annotation.Qualifier import org.springframework.http.ResponseEntity 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.PutMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController("bremer.controller.PlaylistApiController") @RequestMapping("bremer/api/playlist") class PlaylistApiController( @Qualifier("bremer.service.PlaylistService") private val playlistService: PlaylistService, ) { @GetMapping fun getAllPlaylists(): ResponseEntity<AllPlaylistResponse> = ResponseEntity.ok(playlistService.getAllPlaylists()) @PostMapping fun createPlaylist( @Valid @RequestBody request: PlaylistRequest ): ResponseEntity<Void> { playlistService.createPlaylist(request) return ResponseEntity.ok(null) } @PutMapping("{slug}") fun updatePlaylist( @PathVariable("slug") slug: String, @Valid @RequestBody request: PlaylistRequest ): ResponseEntity<Void> { playlistService.updatePlaylist(slug, request) return ResponseEntity.ok(null) } @GetMapping("{slug}") fun getAudioList(@PathVariable("slug") slug: String): ResponseEntity<PlaylistAudioResponse> = ResponseEntity.ok(playlistService.getPlaylist(slug)) @PutMapping("audio/{slug}") fun updateAudioList( @PathVariable("slug") slug: String, @Valid @RequestBody request: PlaylistAudioRequest ): ResponseEntity<Void> { playlistService.updatePlaylistAudioList(slug, request) return ResponseEntity.ok(null) } }