From 4e32adbe4405db98d165a44f7619eb3bde57867e Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Thu, 6 Aug 2026 21:26:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=B0=E5=A2=9E=E6=88=B0?= =?UTF-8?q?=E9=9A=8A=E6=88=90=E5=93=A1=E5=9B=9E=E5=82=B3=E7=B5=90=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../database/service/MemberService.kt | 7 ++++--- .../pcrediveclanrecordbackend/plugins/Mongo.kt | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) 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}") {