diff --git a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/BattleRecordService.kt b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/BattleRecordService.kt index b0fb6aa..9ade40f 100644 --- a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/BattleRecordService.kt +++ b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/database/service/BattleRecordService.kt @@ -1,6 +1,9 @@ package club.sakunadaisuki.pcrediveclanrecordbackend.database.service 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.MongoDatabase import com.mongodb.client.model.Filters @@ -11,10 +14,14 @@ import org.bson.Document class BattleRecordService(private val database: MongoDatabase) { var collection: MongoCollection + var memberCollection: MongoCollection init { database.createCollection("battle_records") collection = database.getCollection("battle_records") + + database.createCollection("member") + memberCollection = database.getCollection("member") } // Create new car @@ -56,4 +63,11 @@ class BattleRecordService(private val database: MongoDatabase) { ) collection.findOneAndDelete(filter) } + + suspend fun createTable(date: String): List = 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) + } } diff --git a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/mapper/MemberMapper.kt b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/mapper/MemberMapper.kt index 2379426..0929c57 100644 --- a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/mapper/MemberMapper.kt +++ b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/mapper/MemberMapper.kt @@ -1,5 +1,6 @@ package club.sakunadaisuki.pcrediveclanrecordbackend.mapper +import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.BattleRecordDto import club.sakunadaisuki.pcrediveclanrecordbackend.database.dto.MemberDto import club.sakunadaisuki.pcrediveclanrecordbackend.model.Member import club.sakunadaisuki.pcrediveclanrecordbackend.model.MemberRequest @@ -35,4 +36,15 @@ fun UpdateMemberRequest.toDto(uid: String): MemberDto { discordID = discordID, leave = leave, ) +} + +fun MemberDto.toEmptyBattleRecordDto(date: String): BattleRecordDto { + return BattleRecordDto( + date = date, + uid = uid, + playerName = playerName, + discordName = discordName, + discordID = discordID, + attackDetailList = emptyList(), + ) } \ No newline at end of file diff --git a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt index e2c252c..4b47bf2 100644 --- a/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt +++ b/src/main/kotlin/club/sakunadaisuki/pcrediveclanrecordbackend/plugins/Mongo.kt @@ -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) + } + } } } }