/* * Copyright (c) 2023. yo-saito. All Rights Reserved. */ package net.piedpiper.bremer.controller.api import jakarta.validation.Valid import net.piedpiper.bremer.model.api.TagAudioRequest import net.piedpiper.bremer.model.api.TagAudioResponse import net.piedpiper.bremer.model.api.TagRequest import net.piedpiper.bremer.model.api.AllTagsResponse import net.piedpiper.bremer.service.TagService import org.springframework.beans.factory.annotation.Qualifier import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* @RestController("bremer.controller.TagApiController") @RequestMapping("bremer/api/tag") class TagApiController( @Qualifier("bremer.service.TagService") private val tagService: TagService ) { @GetMapping fun getAllTags(): ResponseEntity<AllTagsResponse> = ResponseEntity.ok(tagService.getAllTags()) @PostMapping fun createTag(@Valid @RequestBody request: TagRequest): ResponseEntity<Void> { tagService.createTag(request) return ResponseEntity.ok(null) } @GetMapping("{slug}") fun getAudioList(@PathVariable("slug") slug: String): ResponseEntity<TagAudioResponse> = ResponseEntity.ok(tagService.getAudioListByTagSlug(slug)) @PutMapping("{slug}") fun updateTag( @PathVariable("slug") slug: String, @Valid @RequestBody request: TagRequest ): ResponseEntity<Void> { tagService.updateTag(slug, request) return ResponseEntity.ok(null) } @PostMapping("audio/{slug}") fun addAudioList( @PathVariable("slug") slug: String, @Valid @RequestBody request: TagAudioRequest ): ResponseEntity<Void> { tagService.addTagToAudioList(slug, request) return ResponseEntity.ok(null) } @DeleteMapping("audio/{slug}") fun deleteAudioList( @PathVariable("slug") slug: String, @Valid @RequestBody request: TagAudioRequest ): ResponseEntity<Void> { tagService.deleteTagFromAudioList(slug, request) return ResponseEntity.ok(null) } }