加上生成戰報表的功能
This commit is contained in:
+14
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user