CodeController.kt

  1. package delta.codecharacter.server.code

  2. import delta.codecharacter.core.CodeApi
  3. import delta.codecharacter.dtos.CodeDto
  4. import delta.codecharacter.dtos.CodeRevisionDto
  5. import delta.codecharacter.dtos.CreateCodeRevisionRequestDto
  6. import delta.codecharacter.dtos.UpdateLatestCodeRequestDto
  7. import delta.codecharacter.server.code.code_revision.CodeRevisionService
  8. import delta.codecharacter.server.code.latest_code.LatestCodeService
  9. import delta.codecharacter.server.code.locked_code.LockedCodeService
  10. import delta.codecharacter.server.user.UserEntity
  11. import org.springframework.beans.factory.annotation.Autowired
  12. import org.springframework.http.ResponseEntity
  13. import org.springframework.security.access.annotation.Secured
  14. import org.springframework.security.core.context.SecurityContextHolder
  15. import org.springframework.web.bind.annotation.RestController

  16. @RestController
  17. class CodeController(
  18.     @Autowired private val codeRevisionService: CodeRevisionService,
  19.     @Autowired private val latestCodeService: LatestCodeService,
  20.     @Autowired private val lockedCodeService: LockedCodeService
  21. ) : CodeApi {

  22.     @Secured(value = ["ROLE_USER"])
  23.     override fun createCodeRevision(
  24.         createCodeRevisionRequestDto: CreateCodeRevisionRequestDto
  25.     ): ResponseEntity<Unit> {
  26.         val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
  27.         codeRevisionService.createCodeRevision(user.id, createCodeRevisionRequestDto)
  28.         return ResponseEntity.ok().build()
  29.     }

  30.     @Secured(value = ["ROLE_USER"])
  31.     override fun getCodeRevisions(): ResponseEntity<List<CodeRevisionDto>> {
  32.         val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
  33.         return ResponseEntity.ok(codeRevisionService.getCodeRevisions(user.id))
  34.     }

  35.     @Secured(value = ["ROLE_USER"])
  36.     override fun getLatestCode(): ResponseEntity<CodeDto> {
  37.         val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
  38.         return ResponseEntity.ok(latestCodeService.getLatestCode(user.id))
  39.     }

  40.     @Secured(value = ["ROLE_USER"])
  41.     override fun updateLatestCode(
  42.         updateLatestCodeRequestDto: UpdateLatestCodeRequestDto
  43.     ): ResponseEntity<Unit> {
  44.         val user = SecurityContextHolder.getContext().authentication.principal as UserEntity
  45.         latestCodeService.updateLatestCode(user.id, updateLatestCodeRequestDto)
  46.         if (updateLatestCodeRequestDto.lock == true) {
  47.             lockedCodeService.updateLockedCode(user.id, updateLatestCodeRequestDto)
  48.         }
  49.         return ResponseEntity.ok().build()
  50.     }
  51. }