加上生成戰報表的功能
This commit is contained in:
+14
@@ -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<Document>
|
||||
var memberCollection: MongoCollection<Document>
|
||||
|
||||
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<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
|
||||
|
||||
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
|
||||
@@ -36,3 +37,14 @@ fun UpdateMemberRequest.toDto(uid: String): MemberDto {
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user