diff --git a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/MemberService.kt b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/MemberService.kt index d66d454..1beae6a 100644 --- a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/MemberService.kt +++ b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/MemberService.kt @@ -17,13 +17,13 @@ class MemberService(private val database: MongoDatabase) { } // Create new member - suspend fun create(data: MemberDto): String = withContext(Dispatchers.IO) { + suspend fun create(data: MemberDto): MemberDto = withContext(Dispatchers.IO) { data.createAt = System.currentTimeMillis() data.updatedAt = System.currentTimeMillis() data.leave = false val doc = data.toDocument() collection.insertOne(doc) - doc["uid"].toString() + doc.let(MemberDto::fromDocument) } // Read a member @@ -37,8 +37,9 @@ class MemberService(private val database: MongoDatabase) { } // Update a member - suspend fun update(uid: String, data: MemberDto): Document? = withContext(Dispatchers.IO) { + suspend fun update(uid: String, data: MemberDto): MemberDto? = withContext(Dispatchers.IO) { collection.findOneAndReplace(Filters.eq("uid", uid), data.toDocument()) + collection.find(Filters.eq("uid", uid)).first()?.let(MemberDto::fromDocument) } // Delete a member diff --git a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt index 4906f90..a0668b7 100644 --- a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt +++ b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt @@ -44,8 +44,13 @@ fun Application.configureMongo() { // Create member post("/member") { val member = call.receive() - val id = memberService.create(member.toDto()) - call.respond(HttpStatusCode.Created, id) + val existMember = memberService.read(member.uid) + if (existMember == null) { + val id = memberService.create(member.toDto()) + call.respond(HttpStatusCode.Created, id) + } else { + call.respond(HttpStatusCode.Conflict) + } } // Update member put("/member/{uid}") {