51 lines
1.9 KiB
Kotlin
51 lines
1.9 KiB
Kotlin
package space.luminic.finance.api
|
|
|
|
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType
|
|
import io.swagger.v3.oas.annotations.security.SecurityScheme
|
|
import org.springframework.web.bind.annotation.*
|
|
import space.luminic.finance.dtos.TransactionDTO
|
|
import space.luminic.finance.mappers.TransactionMapper.toDto
|
|
import space.luminic.finance.services.TransactionService
|
|
|
|
|
|
@RestController
|
|
@RequestMapping("/spaces/{spaceId}/transactions")
|
|
@SecurityScheme(
|
|
name = "bearerAuth",
|
|
type = SecuritySchemeType.HTTP,
|
|
bearerFormat = "JWT",
|
|
scheme = "bearer"
|
|
)
|
|
class TransactionController (
|
|
private val transactionService: TransactionService,
|
|
){
|
|
|
|
|
|
@GetMapping
|
|
fun getTransactions(@PathVariable spaceId: Int) : List<TransactionDTO>{
|
|
return transactionService.getTransactions(spaceId, TransactionService.TransactionsFilter(),"date", "DESC").map { it.toDto() }
|
|
}
|
|
|
|
@GetMapping("/{transactionId}")
|
|
fun getTransaction(@PathVariable spaceId: Int, @PathVariable transactionId: Int): TransactionDTO {
|
|
return transactionService.getTransaction(spaceId, transactionId).toDto()
|
|
}
|
|
|
|
@PostMapping
|
|
fun createTransaction(@PathVariable spaceId: Int, @RequestBody transactionDTO: TransactionDTO.CreateTransactionDTO): Map<String, Int> {
|
|
return mapOf("id" to transactionService.createTransaction(spaceId, transactionDTO))
|
|
}
|
|
|
|
|
|
@PutMapping("/{transactionId}")
|
|
fun updateTransaction(@PathVariable spaceId: Int, @PathVariable transactionId: Int, @RequestBody transactionDTO: TransactionDTO.UpdateTransactionDTO): Map<String, Int> {
|
|
return mapOf("id" to transactionService.updateTransaction(spaceId, transactionId, transactionDTO))
|
|
}
|
|
|
|
@DeleteMapping("/{transactionId}")
|
|
fun deleteTransaction(@PathVariable spaceId: Int, @PathVariable transactionId: Int) {
|
|
transactionService.deleteTransaction(spaceId, transactionId)
|
|
}
|
|
|
|
|
|
} |