package de.fraunhofer.iem.dataprovider.gitlab

import de.fraunhofer.iem.dataprovider.logger.getLogger
import org.springframework.web.bind.annotation.*

enum class Platform {
    OPEN_CODE,
    GITHUB,
}
data class RepositoryChangedDto(val repoId: Long, val platform: Platform)

@RestController
@RequestMapping("/gitlab")
class GitlabController(private val gitlabService: GitlabService) {

    private val logger = getLogger(javaClass)

    // TODO: if the parsing of the request body fails we send a stack
    //  trace back this should be changed to a custom error.
    @PostMapping("/repoChanged")
    suspend fun repoChanged(@RequestBody repositoryChangedDto: RepositoryChangedDto) {
        logger.info("Repo changed POST request for ID ${repositoryChangedDto.repoId} on platform ${repositoryChangedDto.platform} received.")
        when (repositoryChangedDto.platform) {
            Platform.OPEN_CODE -> gitlabService.queryOpenCodeProject(repositoryChangedDto.repoId)
            else -> {
                logger.info("Platform currently not supported.")
                // TODO: send fitting http response
            }
        }
    }

}