chore(web): refactored REST controllers
This commit is contained in:
@@ -1,13 +1,22 @@
|
|||||||
package com.project.movienight.adapters.web
|
package com.project.movienight.adapters.web
|
||||||
|
|
||||||
|
import com.project.movienight.adapters.web.dto.request.CreateFilmRequest
|
||||||
|
import com.project.movienight.adapters.web.dto.request.EditFilmRequest
|
||||||
|
import com.project.movienight.adapters.web.dto.response.FilmResponse
|
||||||
import com.project.movienight.application.ports.input.CreateFilmCommand
|
import com.project.movienight.application.ports.input.CreateFilmCommand
|
||||||
import com.project.movienight.application.ports.input.CreateFilmUseCase
|
import com.project.movienight.application.ports.input.CreateFilmUseCase
|
||||||
import com.project.movienight.application.ports.input.DeleteFilmUseCase
|
import com.project.movienight.application.ports.input.DeleteFilmUseCase
|
||||||
import com.project.movienight.application.ports.input.EditFilmCommand
|
import com.project.movienight.application.ports.input.EditFilmCommand
|
||||||
import com.project.movienight.application.ports.input.EditFilmUseCase
|
import com.project.movienight.application.ports.input.EditFilmUseCase
|
||||||
import com.project.movienight.domain.model.Film
|
|
||||||
import org.springframework.http.HttpStatus
|
import org.springframework.http.HttpStatus
|
||||||
import org.springframework.web.bind.annotation.*
|
import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
|
import org.springframework.web.bind.annotation.PatchMapping
|
||||||
|
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.ResponseStatus
|
||||||
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -17,42 +26,39 @@ class FilmController(
|
|||||||
private val editFilmUseCase: EditFilmUseCase,
|
private val editFilmUseCase: EditFilmUseCase,
|
||||||
private val deleteFilmUseCase: DeleteFilmUseCase,
|
private val deleteFilmUseCase: DeleteFilmUseCase,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ResponseStatus(HttpStatus.CREATED)
|
@ResponseStatus(HttpStatus.CREATED)
|
||||||
fun create(@RequestBody request: CreateFilmRequest): Film =
|
fun create(
|
||||||
createFilmUseCase.create(
|
@RequestBody request: CreateFilmRequest,
|
||||||
CreateFilmCommand(
|
): FilmResponse =
|
||||||
title = request.title,
|
FilmResponse.fromDomain(
|
||||||
description = request.description,
|
createFilmUseCase.create(
|
||||||
)
|
CreateFilmCommand(
|
||||||
|
title = request.title,
|
||||||
|
description = request.description,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@PatchMapping("/{id}")
|
@PatchMapping("/{id}")
|
||||||
fun edit(
|
fun edit(
|
||||||
@PathVariable id: UUID,
|
@PathVariable id: UUID,
|
||||||
@RequestBody request: EditFilmRequest,
|
@RequestBody request: EditFilmRequest,
|
||||||
): Film =
|
): FilmResponse =
|
||||||
editFilmUseCase.edit(
|
FilmResponse.fromDomain(
|
||||||
id = id,
|
editFilmUseCase.edit(
|
||||||
command = EditFilmCommand(
|
id = id,
|
||||||
title = request.title,
|
command =
|
||||||
description = request.description,
|
EditFilmCommand(
|
||||||
)
|
title = request.title,
|
||||||
|
description = request.description,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@ResponseStatus(HttpStatus.NO_CONTENT)
|
@ResponseStatus(HttpStatus.NO_CONTENT)
|
||||||
fun delete(@PathVariable id: UUID) =
|
fun delete(
|
||||||
deleteFilmUseCase.delete(id)
|
@PathVariable id: UUID,
|
||||||
|
) = deleteFilmUseCase.delete(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CreateFilmRequest(
|
|
||||||
val title: String,
|
|
||||||
val description: String,
|
|
||||||
)
|
|
||||||
|
|
||||||
data class EditFilmRequest(
|
|
||||||
val title: String,
|
|
||||||
val description: String,
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.project.movienight.adapters.web
|
package com.project.movienight.adapters.web
|
||||||
|
|
||||||
|
import com.project.movienight.adapters.web.dto.request.CreateFilmLibraryRequest
|
||||||
|
import com.project.movienight.adapters.web.dto.response.FilmLibraryResponse
|
||||||
import com.project.movienight.application.ports.input.AddFilmToLibraryCommand
|
import com.project.movienight.application.ports.input.AddFilmToLibraryCommand
|
||||||
import com.project.movienight.application.ports.input.AddFilmToLibraryUseCase
|
import com.project.movienight.application.ports.input.AddFilmToLibraryUseCase
|
||||||
import com.project.movienight.application.ports.input.CreateFilmLibraryCommand
|
import com.project.movienight.application.ports.input.CreateFilmLibraryCommand
|
||||||
@@ -8,9 +10,15 @@ import com.project.movienight.application.ports.input.GetFilmLibraryQuery
|
|||||||
import com.project.movienight.application.ports.input.GetFilmLibraryUseCase
|
import com.project.movienight.application.ports.input.GetFilmLibraryUseCase
|
||||||
import com.project.movienight.application.ports.input.RemoveFilmFromLibraryCommand
|
import com.project.movienight.application.ports.input.RemoveFilmFromLibraryCommand
|
||||||
import com.project.movienight.application.ports.input.RemoveFilmFromLibraryUseCase
|
import com.project.movienight.application.ports.input.RemoveFilmFromLibraryUseCase
|
||||||
import com.project.movienight.domain.model.FilmLibrary
|
|
||||||
import org.springframework.http.HttpStatus
|
import org.springframework.http.HttpStatus
|
||||||
import org.springframework.web.bind.annotation.*
|
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.ResponseStatus
|
||||||
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -21,24 +29,29 @@ class FilmLibraryController(
|
|||||||
private val removeFilmFromLibraryUseCase: RemoveFilmFromLibraryUseCase,
|
private val removeFilmFromLibraryUseCase: RemoveFilmFromLibraryUseCase,
|
||||||
private val getFilmLibraryUseCase: GetFilmLibraryUseCase,
|
private val getFilmLibraryUseCase: GetFilmLibraryUseCase,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ResponseStatus(HttpStatus.CREATED)
|
@ResponseStatus(HttpStatus.CREATED)
|
||||||
fun create(
|
fun create(
|
||||||
@PathVariable userId: UUID,
|
@PathVariable userId: UUID,
|
||||||
@RequestBody request: CreateFilmLibraryRequest,
|
@RequestBody request: CreateFilmLibraryRequest,
|
||||||
): FilmLibrary =
|
): FilmLibraryResponse =
|
||||||
createFilmLibraryUseCase.create(
|
FilmLibraryResponse.fromDomain(
|
||||||
CreateFilmLibraryCommand(
|
createFilmLibraryUseCase.create(
|
||||||
userId = userId,
|
CreateFilmLibraryCommand(
|
||||||
name = request.name,
|
userId = userId,
|
||||||
)
|
name = request.name,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
fun get(@PathVariable userId: UUID): FilmLibrary =
|
fun get(
|
||||||
getFilmLibraryUseCase.getLibrary(
|
@PathVariable userId: UUID,
|
||||||
GetFilmLibraryQuery(userId = userId)
|
): FilmLibraryResponse =
|
||||||
|
FilmLibraryResponse.fromDomain(
|
||||||
|
getFilmLibraryUseCase.getLibrary(
|
||||||
|
GetFilmLibraryQuery(userId = userId),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@PostMapping("/films/{filmId}")
|
@PostMapping("/films/{filmId}")
|
||||||
@@ -46,12 +59,14 @@ class FilmLibraryController(
|
|||||||
fun addFilm(
|
fun addFilm(
|
||||||
@PathVariable userId: UUID,
|
@PathVariable userId: UUID,
|
||||||
@PathVariable filmId: UUID,
|
@PathVariable filmId: UUID,
|
||||||
): FilmLibrary =
|
): FilmLibraryResponse =
|
||||||
addFilmToLibraryUseCase.addFilm(
|
FilmLibraryResponse.fromDomain(
|
||||||
AddFilmToLibraryCommand(
|
addFilmToLibraryUseCase.addFilm(
|
||||||
userId = userId,
|
AddFilmToLibraryCommand(
|
||||||
filmId = filmId,
|
userId = userId,
|
||||||
)
|
filmId = filmId,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@DeleteMapping("/films/{filmId}")
|
@DeleteMapping("/films/{filmId}")
|
||||||
@@ -63,10 +78,6 @@ class FilmLibraryController(
|
|||||||
RemoveFilmFromLibraryCommand(
|
RemoveFilmFromLibraryCommand(
|
||||||
userId = userId,
|
userId = userId,
|
||||||
filmId = filmId,
|
filmId = filmId,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CreateFilmLibraryRequest(
|
|
||||||
val name: String = "Мои фильмы",
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
package com.project.movienight.adapters.web
|
package com.project.movienight.adapters.web
|
||||||
|
|
||||||
|
import com.project.movienight.adapters.web.dto.request.CreateUserRequest
|
||||||
|
import com.project.movienight.adapters.web.dto.request.EditUserRequest
|
||||||
|
import com.project.movienight.adapters.web.dto.response.UserResponse
|
||||||
import com.project.movienight.application.ports.input.CreateUserCommand
|
import com.project.movienight.application.ports.input.CreateUserCommand
|
||||||
import com.project.movienight.application.ports.input.CreateUserUseCase
|
import com.project.movienight.application.ports.input.CreateUserUseCase
|
||||||
import com.project.movienight.application.ports.input.DeleteUserUseCase
|
import com.project.movienight.application.ports.input.DeleteUserUseCase
|
||||||
import com.project.movienight.application.ports.input.EditUserCommand
|
import com.project.movienight.application.ports.input.EditUserCommand
|
||||||
import com.project.movienight.application.ports.input.EditUserUseCase
|
import com.project.movienight.application.ports.input.EditUserUseCase
|
||||||
import com.project.movienight.domain.model.User
|
|
||||||
import org.springframework.http.HttpStatus
|
import org.springframework.http.HttpStatus
|
||||||
import org.springframework.web.bind.annotation.*
|
import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
|
import org.springframework.web.bind.annotation.PatchMapping
|
||||||
|
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.ResponseStatus
|
||||||
|
import org.springframework.web.bind.annotation.RestController
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -17,40 +26,38 @@ class UserController(
|
|||||||
private val editUserUseCase: EditUserUseCase,
|
private val editUserUseCase: EditUserUseCase,
|
||||||
private val deleteUserUseCase: DeleteUserUseCase,
|
private val deleteUserUseCase: DeleteUserUseCase,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ResponseStatus(HttpStatus.CREATED)
|
@ResponseStatus(HttpStatus.CREATED)
|
||||||
fun create(@RequestBody request: CreateUserRequest): User =
|
fun create(
|
||||||
createUserUseCase.create(
|
@RequestBody request: CreateUserRequest,
|
||||||
CreateUserCommand(
|
): UserResponse =
|
||||||
name = request.name,
|
UserResponse.fromDomain(
|
||||||
email = request.email,
|
createUserUseCase.create(
|
||||||
)
|
CreateUserCommand(
|
||||||
|
name = request.name,
|
||||||
|
email = request.email,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@PatchMapping("/{id}")
|
@PatchMapping("/{id}")
|
||||||
fun edit(
|
fun edit(
|
||||||
@PathVariable id: UUID,
|
@PathVariable id: UUID,
|
||||||
@RequestBody request: EditUserRequest,
|
@RequestBody request: EditUserRequest,
|
||||||
): User =
|
): UserResponse =
|
||||||
editUserUseCase.edit(
|
UserResponse.fromDomain(
|
||||||
id = id,
|
editUserUseCase.edit(
|
||||||
command = EditUserCommand(
|
id = id,
|
||||||
name = request.name,
|
command =
|
||||||
)
|
EditUserCommand(
|
||||||
|
name = request.name,
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@ResponseStatus(HttpStatus.NO_CONTENT)
|
@ResponseStatus(HttpStatus.NO_CONTENT)
|
||||||
fun delete(@PathVariable id: UUID) =
|
fun delete(
|
||||||
deleteUserUseCase.delete(id)
|
@PathVariable id: UUID,
|
||||||
|
) = deleteUserUseCase.delete(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CreateUserRequest(
|
|
||||||
val name: String,
|
|
||||||
val email: String,
|
|
||||||
)
|
|
||||||
|
|
||||||
data class EditUserRequest(
|
|
||||||
val name: String,
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user