mirror of
https://github.com/dalbodeule/sh0rt.kr-pdns.git
synced 2025-12-18 06:11:59 +09:00
add domain service, auth service
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package space.mori.dnsapi.controller
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation
|
||||
import io.swagger.v3.oas.annotations.Parameter
|
||||
import io.swagger.v3.oas.annotations.media.ArraySchema
|
||||
import io.swagger.v3.oas.annotations.media.Content
|
||||
import io.swagger.v3.oas.annotations.media.Schema
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse
|
||||
@@ -10,61 +8,66 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.web.bind.annotation.*
|
||||
import space.mori.dnsapi.db.Domain
|
||||
import space.mori.dnsapi.dto.ApiResponseDTO
|
||||
import space.mori.dnsapi.dto.DeleteResponseWithId
|
||||
import space.mori.dnsapi.dto.DomainRequestDTO
|
||||
import space.mori.dnsapi.dto.DomainResponseDTO
|
||||
import space.mori.dnsapi.filter.getCurrentUser
|
||||
import space.mori.dnsapi.service.DomainService
|
||||
import java.util.*
|
||||
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/domain")
|
||||
class DomainController {
|
||||
@RequestMapping("/zones")
|
||||
class DomainController(
|
||||
@Autowired
|
||||
private val domainService: DomainService? = null
|
||||
|
||||
@get:GetMapping
|
||||
@get:Operation(summary = "Get all domains", tags = ["domain"])
|
||||
@get:ApiResponse(responseCode = "200", description = "Returns all domains",
|
||||
content = [Content(array = ArraySchema(schema = Schema(implementation = DomainResponseDTO::class)))])
|
||||
val allDomains: List<DomainResponseDTO?>
|
||||
get() = domainService!!.getAllDomains().map { it?.toDTO() }
|
||||
private val domainService: DomainService
|
||||
) {
|
||||
@GetMapping
|
||||
@Operation(summary = "Get all domains", tags = ["domain"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Returns all domains", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "404", description = "Returns not found",
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))])
|
||||
])
|
||||
fun allDomains(): ApiResponseDTO<List<DomainResponseDTO?>> {
|
||||
return ApiResponseDTO(result = domainService.getAllDomains().map { it.toDTO() })
|
||||
}
|
||||
|
||||
@Operation(summary = "Get domain", tags = ["domain"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Returns domain",
|
||||
content = [Content(schema = Schema(implementation = DomainResponseDTO::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Returns domain", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "404", description = "Returns not found",
|
||||
content = [Content(schema = Schema(implementation = Void::class))])
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))])
|
||||
])
|
||||
@GetMapping("/{cfid}")
|
||||
fun getDomainByCfid(
|
||||
@Parameter(description = "CFID", required = true)
|
||||
@PathVariable cfid: String?
|
||||
): Optional<DomainResponseDTO> {
|
||||
return domainService!!.getDomainById(cfid!!).map { it.toDTO() }
|
||||
): ApiResponseDTO<DomainResponseDTO> {
|
||||
return ApiResponseDTO(result = domainService.getDomainById(cfid!!).toDTO())
|
||||
}
|
||||
|
||||
@Operation(summary = "Create domain", tags = ["domain"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Created domain",
|
||||
content = [Content(schema = Schema(implementation = DomainResponseDTO::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Created domain", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))])
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))])
|
||||
])
|
||||
@PostMapping
|
||||
fun createDomain(@RequestBody domain: Domain?): DomainResponseDTO {
|
||||
return domainService!!.createDomain(domain!!).toDTO()
|
||||
fun createDomain(@RequestBody domain: DomainRequestDTO): ApiResponseDTO<DomainResponseDTO> {
|
||||
return ApiResponseDTO(result = domainService.createDomain(domain).toDTO())
|
||||
}
|
||||
|
||||
@Operation(summary = "Delete domain", tags = ["domain"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Deleted domain",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Deleted domain", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))])
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))])
|
||||
])
|
||||
@DeleteMapping("/{cfid}")
|
||||
fun deleteDomain(@PathVariable cfid: String?) {
|
||||
domainService!!.deleteDomain(cfid!!)
|
||||
@DeleteMapping("/{domain_id}")
|
||||
fun deleteDomain(@PathVariable domain_id: String?): ApiResponseDTO<DeleteResponseWithId> {
|
||||
domainService.deleteDomain(domain_id!!)
|
||||
|
||||
return ApiResponseDTO(result=DeleteResponseWithId(domain_id))
|
||||
}
|
||||
|
||||
private fun Domain.toDTO() = DomainResponseDTO(id = cfid, name = name)
|
||||
|
||||
@@ -1,21 +1,16 @@
|
||||
package space.mori.dnsapi.controller
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation
|
||||
import io.swagger.v3.oas.annotations.media.ArraySchema
|
||||
import io.swagger.v3.oas.annotations.media.Content
|
||||
import io.swagger.v3.oas.annotations.media.Schema
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.data.jpa.domain.AbstractPersistable_.id
|
||||
import org.springframework.web.bind.annotation.*
|
||||
import space.mori.dnsapi.db.Domain
|
||||
import space.mori.dnsapi.dto.*
|
||||
import space.mori.dnsapi.db.Record as DomainRecord
|
||||
import space.mori.dnsapi.dto.RecordRequestDTO
|
||||
import space.mori.dnsapi.dto.RecordResponseDTO
|
||||
import space.mori.dnsapi.getISOFormat
|
||||
import space.mori.dnsapi.service.RecordService
|
||||
import java.util.*
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/zones")
|
||||
@@ -26,61 +21,57 @@ class RecordController(
|
||||
@GetMapping("{zone_id}/dns_records")
|
||||
@Operation(summary = "Get all records", tags=["record"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Return All Records",
|
||||
content = [Content(array = ArraySchema(schema = Schema(implementation = RecordResponseDTO::class)))]),
|
||||
ApiResponse(responseCode = "200", description = "Return All Records", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))]),
|
||||
])
|
||||
fun allRecords(@PathVariable zone_id: String): List<RecordResponseDTO> {
|
||||
return recordService.getRecordsByDomain(zone_id)?.map{ it } ?: listOf()
|
||||
fun allRecords(@PathVariable zone_id: String): ApiResponseDTO<List<RecordResponseDTO>> {
|
||||
return ApiResponseDTO(result = recordService.getRecordsByDomain(zone_id)?.map{ it } ?: listOf())
|
||||
}
|
||||
|
||||
@GetMapping("{zone_id}/dns_records/{dns_record_id}")
|
||||
@Operation(summary = "Get Record by ID", tags=["record"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Return Record",
|
||||
content = [Content(schema = Schema(implementation = RecordResponseDTO::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Return Record", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))])
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))]),
|
||||
])
|
||||
fun getRecordByCfid(@PathVariable zone_id: String, @PathVariable dns_record_id: String): RecordResponseDTO {
|
||||
return recordService.getRecord(zone_id, dns_record_id)
|
||||
fun getRecordByCfid(@PathVariable zone_id: String, @PathVariable dns_record_id: String): ApiResponseDTO<RecordResponseDTO> {
|
||||
return ApiResponseDTO(result = recordService.getRecord(zone_id, dns_record_id))
|
||||
}
|
||||
|
||||
@PostMapping("{zone_id}/dns_records")
|
||||
@Operation(summary = "Add Record by ID", tags=["record"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Return Record",
|
||||
content = [Content(schema = Schema(implementation = RecordResponseDTO::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Return Record", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))]),
|
||||
])
|
||||
fun createRecord(@PathVariable zone_id: String, @RequestBody record: RecordRequestDTO): RecordResponseDTO {
|
||||
return recordService.createRecord(zone_id, record)
|
||||
fun createRecord(@PathVariable zone_id: String, @RequestBody record: RecordRequestDTO): ApiResponseDTO<RecordResponseDTO> {
|
||||
return ApiResponseDTO(result = recordService.createRecord(zone_id, record))
|
||||
}
|
||||
|
||||
@DeleteMapping("{zone_id}/dns_records/{dns_record_id}")
|
||||
@Operation(summary = "Remove Record by ID", tags=["record"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Return Record",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Return Record", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))]),
|
||||
])
|
||||
fun deleteRecord(@PathVariable zone_id: String, @PathVariable dns_record_id: String) {
|
||||
recordService.deleteRecord(zone_id, dns_record_id)
|
||||
fun deleteRecord(@PathVariable zone_id: String, @PathVariable dns_record_id: String): ApiResponseDTO<DeleteResponseWithId> {
|
||||
val record_id = recordService.deleteRecord(zone_id, dns_record_id)
|
||||
return ApiResponseDTO(result = DeleteResponseWithId(record_id))
|
||||
}
|
||||
|
||||
@PatchMapping("{zone_id}/dns_records/{dns_record_id}")
|
||||
@Operation(summary = "Update Record by ID", tags=["record"])
|
||||
@ApiResponses(value = [
|
||||
ApiResponse(responseCode = "200", description = "Return Record",
|
||||
content = [Content(schema = Schema(implementation = RecordResponseDTO::class))]),
|
||||
ApiResponse(responseCode = "200", description = "Return Record", useReturnTypeSchema = true),
|
||||
ApiResponse(responseCode = "400", description = "Bad request",
|
||||
content = [Content(schema = Schema(implementation = Void::class))]),
|
||||
content = [Content(schema = Schema(implementation = ApiResponseDTO::class))]),
|
||||
])
|
||||
fun updateRecord(@PathVariable zone_id: String, @PathVariable dns_record_id: String, @RequestBody record: RecordRequestDTO): RecordResponseDTO {
|
||||
return recordService.updateRecord(zone_id, dns_record_id, record)
|
||||
fun updateRecord(@PathVariable zone_id: String, @PathVariable dns_record_id: String, @RequestBody record: RecordRequestDTO): ApiResponseDTO<RecordResponseDTO> {
|
||||
return ApiResponseDTO(result = recordService.updateRecord(zone_id, dns_record_id, record))
|
||||
}
|
||||
|
||||
private fun DomainRecord.toDTO() = RecordResponseDTO(
|
||||
|
||||
Reference in New Issue
Block a user