Slide 63
Slide 63 text
ΫΤϦ༻ΞϓϦέʔγϣϯαʔϏεͷఆٛྫ
class GetTaskStatisticsQuery()
case class GetTaskStatisticsDto(
numberOfTasks: Int,
numberOfUnfinishedTasks: Int,
numberOfFinishedTasks: Int
)
class GetTaskStatisticsApplicationService() {
def apply(query: GetTaskStatisticsQuery): GetTaskStatisticsDto =
DB.readOnly { implicit session =>
sql"""SELECT COUNT(*), COUNT(finished_at) FROM tasks""".map { rs =>
val numberOfTasks = rs.int(1)
val numberOfFinishedTasks = rs.int(2)
GetTaskStatisticsDto(
numberOfTasks,
numberOfTasks - numberOfFinishedTasks,
numberOfFinishedTasks
)
}.single.apply.getOrElse(GetTaskStatisticsDto(0, 0, 0))
}
}