加上生成戰報表的功能

This commit is contained in:
2026-08-09 01:44:19 +08:00
parent 0741d5846b
commit 8b20758404
3 changed files with 32 additions and 1 deletions
@@ -1,6 +1,9 @@
package club.sakunadaisuki.pcrediveclanrecordbackend.database.service package club.sakunadaisuki.pcrediveclanrecordbackend.database.service
import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.BattleRecordDto import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.BattleRecordDto
import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.MemberDto
import club.sakunadaisuki.pcrediveclanrecordbackend.mapper.toEmptyBattleRecordDto
import club.sakunadaisuki.pcrediveclanrecordbackend.model.BattleRecord
import com.mongodb.client.MongoCollection import com.mongodb.client.MongoCollection
import com.mongodb.client.MongoDatabase import com.mongodb.client.MongoDatabase
import com.mongodb.client.model.Filters import com.mongodb.client.model.Filters
@@ -11,10 +14,14 @@ import org.bson.Document
class BattleRecordService(private val database: MongoDatabase) { class BattleRecordService(private val database: MongoDatabase) {
var collection: MongoCollection<Document> var collection: MongoCollection<Document>
var memberCollection: MongoCollection<Document>
init { init {
database.createCollection("battle_records") database.createCollection("battle_records")
collection = database.getCollection("battle_records") collection = database.getCollection("battle_records")
database.createCollection("member")
memberCollection = database.getCollection("member")
} }
// Create new car // Create new car
@@ -56,4 +63,11 @@ class BattleRecordService(private val database: MongoDatabase) {
) )
collection.findOneAndDelete(filter) collection.findOneAndDelete(filter)
} }
suspend fun createTable(date: String): List<BattleRecordDto> = withContext(Dispatchers.IO) {
val memberList = memberCollection.find(Filters.eq("leave", false)).toList().map(MemberDto::fromDocument)
val emptyBattleRecordList = memberList.map { it.toEmptyBattleRecordDto(date) }
collection.insertMany(emptyBattleRecordList.map { it.toDocument() })
collection.find(Filters.eq("date", date)).toList().map(BattleRecordDto::fromDocument)
}
} }
@@ -1,5 +1,6 @@
package club.sakunadaisuki.pcrediveclanrecordbackend.mapper package club.sakunadaisuki.pcrediveclanrecordbackend.mapper
import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.BattleRecordDto
import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.MemberDto import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.MemberDto
import club.sakunadaisuki.pcrediveclanrecordbackend.model.Member import club.sakunadaisuki.pcrediveclanrecordbackend.model.Member
import club.sakunadaisuki.pcrediveclanrecordbackend.model.MemberRequest import club.sakunadaisuki.pcrediveclanrecordbackend.model.MemberRequest
@@ -36,3 +37,14 @@ fun UpdateMemberRequest.toDto(uid: String): MemberDto {
leave = leave, leave = leave,
) )
} }
fun MemberDto.toEmptyBattleRecordDto(date: String): BattleRecordDto {
return BattleRecordDto(
date = date,
uid = uid,
playerName = playerName,
discordName = discordName,
discordID = discordID,
attackDetailList = emptyList(),
)
}
@@ -126,7 +126,12 @@ fun Application.configureMongo() {
} }
} }
post("/battle_record/create_table/{date}") {
val date = call.parameters["date"] ?: throw IllegalArgumentException("No date")
battleRecordService.createTable(date).let { battleRecord ->
call.respond(HttpStatusCode.OK, battleRecord)
}
}
} }
} }
} }