From 8b808bfd349a3f77d01e23f50d769a0109bd5ee9 Mon Sep 17 00:00:00 2001 From: aarbit Date: Wed, 3 Dec 2025 21:38:28 -0600 Subject: [PATCH] Adds basic hunter signup endpoint --- .../controller/SignupController.kt | 16 ++++++++++++++++ .../model/converter/HunterConverter.kt | 18 ++++++++++++++++++ .../scavengerhuntapi/model/domain/Hunter.kt | 11 +++++++++++ .../model/request/HunterSignupRequest.kt | 7 +++++++ .../scavengerhuntapi/service/SignupService.kt | 13 +++++++++++++ 5 files changed, 65 insertions(+) create mode 100644 src/main/kotlin/net/halfbinary/scavengerhuntapi/controller/SignupController.kt create mode 100644 src/main/kotlin/net/halfbinary/scavengerhuntapi/model/converter/HunterConverter.kt create mode 100644 src/main/kotlin/net/halfbinary/scavengerhuntapi/model/domain/Hunter.kt create mode 100644 src/main/kotlin/net/halfbinary/scavengerhuntapi/model/request/HunterSignupRequest.kt create mode 100644 src/main/kotlin/net/halfbinary/scavengerhuntapi/service/SignupService.kt diff --git a/src/main/kotlin/net/halfbinary/scavengerhuntapi/controller/SignupController.kt b/src/main/kotlin/net/halfbinary/scavengerhuntapi/controller/SignupController.kt new file mode 100644 index 0000000..7929f49 --- /dev/null +++ b/src/main/kotlin/net/halfbinary/scavengerhuntapi/controller/SignupController.kt @@ -0,0 +1,16 @@ +package net.halfbinary.scavengerhuntapi.controller + +import net.halfbinary.scavengerhuntapi.model.converter.toDomain +import net.halfbinary.scavengerhuntapi.model.request.HunterSignupRequest +import net.halfbinary.scavengerhuntapi.service.SignupService +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RestController + +@RestController +class SignupController(private val signupService: SignupService) { + @PostMapping("/signup") + fun hunterSignup(@RequestBody body: HunterSignupRequest) { + signupService.createNewHunter(body.toDomain()) + } +} \ No newline at end of file diff --git a/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/converter/HunterConverter.kt b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/converter/HunterConverter.kt new file mode 100644 index 0000000..202e28d --- /dev/null +++ b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/converter/HunterConverter.kt @@ -0,0 +1,18 @@ +package net.halfbinary.scavengerhuntapi.model.converter + +import net.halfbinary.scavengerhuntapi.model.domain.Hunter +import net.halfbinary.scavengerhuntapi.model.record.HunterRecord +import net.halfbinary.scavengerhuntapi.model.request.HunterSignupRequest + +fun HunterSignupRequest.toDomain(): Hunter { + return Hunter( + email = email, + name = name, + password = password, + isAdmin = false + ) +} + +fun Hunter.toRecord(): HunterRecord { + return HunterRecord(id, email, name, password, isAdmin) +} \ No newline at end of file diff --git a/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/domain/Hunter.kt b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/domain/Hunter.kt new file mode 100644 index 0000000..787bf84 --- /dev/null +++ b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/domain/Hunter.kt @@ -0,0 +1,11 @@ +package net.halfbinary.scavengerhuntapi.model.domain + +import java.util.UUID + +data class Hunter( + val id: UUID = UUID.randomUUID(), + val email: String, + val name: String, + val password: String, + val isAdmin: Boolean +) diff --git a/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/request/HunterSignupRequest.kt b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/request/HunterSignupRequest.kt new file mode 100644 index 0000000..8e179cc --- /dev/null +++ b/src/main/kotlin/net/halfbinary/scavengerhuntapi/model/request/HunterSignupRequest.kt @@ -0,0 +1,7 @@ +package net.halfbinary.scavengerhuntapi.model.request + +data class HunterSignupRequest( + val email: String, + val name: String, + val password: String +) diff --git a/src/main/kotlin/net/halfbinary/scavengerhuntapi/service/SignupService.kt b/src/main/kotlin/net/halfbinary/scavengerhuntapi/service/SignupService.kt new file mode 100644 index 0000000..42e608b --- /dev/null +++ b/src/main/kotlin/net/halfbinary/scavengerhuntapi/service/SignupService.kt @@ -0,0 +1,13 @@ +package net.halfbinary.scavengerhuntapi.service + +import net.halfbinary.scavengerhuntapi.model.converter.toRecord +import net.halfbinary.scavengerhuntapi.model.domain.Hunter +import net.halfbinary.scavengerhuntapi.repository.HunterRepository +import org.springframework.stereotype.Service + +@Service +class SignupService(private val hunterRepository: HunterRepository) { + fun createNewHunter(hunter: Hunter) { + hunterRepository.save(hunter.toRecord()) + } +} \ No newline at end of file