Skip to content

Commit 5552904

Browse files
committed
Fixed schedule endpoint
1 parent 1566c84 commit 5552904

File tree

3 files changed

+23
-50
lines changed

3 files changed

+23
-50
lines changed

src/main/kotlin/com/jeluchu/core/utils/ParseDocuments.kt

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,9 @@
11
package com.jeluchu.core.utils
22

3-
import com.jeluchu.features.rankings.models.AnimeTopEntity
4-
import com.jeluchu.features.schedule.models.DayEntity
5-
import com.jeluchu.features.schedule.models.ScheduleData
63
import kotlinx.serialization.KSerializer
7-
import kotlinx.serialization.encodeToString
84
import kotlinx.serialization.json.Json
95
import org.bson.Document
106

11-
fun parseTopDataToDocuments(data: ScheduleData): List<Document> {
12-
val documents = mutableListOf<Document>()
13-
fun processDay(dayList: List<DayEntity>?) {
14-
dayList?.forEach { animeData ->
15-
val animeJsonString = Json.encodeToString(animeData)
16-
val document = Document.parse(animeJsonString)
17-
documents.add(document)
18-
}
19-
}
20-
21-
processDay(data.monday)
22-
processDay(data.tuesday)
23-
processDay(data.wednesday)
24-
processDay(data.thursday)
25-
processDay(data.friday)
26-
processDay(data.saturday)
27-
processDay(data.sunday)
28-
29-
return documents
30-
}
31-
32-
fun parseTopDataToDocuments(data: List<AnimeTopEntity>?): List<Document> {
33-
val documents = mutableListOf<Document>()
34-
data?.forEach { animeData ->
35-
val animeJsonString = Json.encodeToString(animeData)
36-
val document = Document.parse(animeJsonString)
37-
documents.add(document)
38-
}
39-
return documents
40-
}
41-
427
fun <T> parseDataToDocuments(data: List<T>?, serializer: KSerializer<T>): List<Document> {
438
val documents = mutableListOf<Document>()
449
data?.forEach { item ->

src/main/kotlin/com/jeluchu/features/rankings/services/RankingsService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ class RankingsService(
368368
}.orEmpty().take(11).distinctBy { it.malId }
369369

370370
val documentsToInsert = parseDataToDocuments(response, AnimeTopEntity.serializer())
371-
if (documentsToInsert.isNotEmpty()) animeRankingTopTen .insertMany(documentsToInsert)
371+
if (documentsToInsert.isNotEmpty()) animeRankingTopTen.insertMany(documentsToInsert)
372372
timers.update(timerKey)
373373

374374
val elements = documentsToInsert.map { documentToAnimeTopEntity(it) }

src/main/kotlin/com/jeluchu/features/schedule/services/ScheduleService.kt

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.jeluchu.core.models.ErrorResponse
1111
import com.jeluchu.core.models.jikan.anime.AnimeData.Companion.toDayEntity
1212
import com.jeluchu.core.utils.*
1313
import com.jeluchu.features.anime.mappers.documentToScheduleDayEntity
14+
import com.jeluchu.features.schedule.models.DayEntity
1415
import com.jeluchu.features.schedule.models.ScheduleData
1516
import com.jeluchu.features.schedule.models.ScheduleEntity
1617
import com.mongodb.client.MongoDatabase
@@ -37,22 +38,20 @@ class ScheduleService(
3738

3839
if (needsUpdate) {
3940
schedules.deleteMany(Document())
41+
val documents = mutableListOf<Document>()
4042

41-
val response = ScheduleData(
42-
sunday = getSchedule(Day.SUNDAY).data?.map { it.toDayEntity(Day.SUNDAY) }.orEmpty(),
43-
friday = getSchedule(Day.FRIDAY).data?.map { it.toDayEntity(Day.FRIDAY) }.orEmpty(),
44-
monday = getSchedule(Day.MONDAY).data?.map { it.toDayEntity(Day.MONDAY) }.orEmpty(),
45-
tuesday = getSchedule(Day.TUESDAY).data?.map { it.toDayEntity(Day.TUESDAY) }.orEmpty(),
46-
thursday = getSchedule(Day.THURSDAY).data?.map { it.toDayEntity(Day.THURSDAY) }.orEmpty(),
47-
saturday = getSchedule(Day.SATURDAY).data?.map { it.toDayEntity(Day.SATURDAY) }.orEmpty(),
48-
wednesday = getSchedule(Day.WEDNESDAY).data?.map { it.toDayEntity(Day.WEDNESDAY) }.orEmpty()
49-
)
43+
Day.entries.forEach { day ->
44+
val animes = getSchedule(day).data?.map { it.toDayEntity(day) }.orEmpty()
45+
val documentsToInsert = parseDataToDocuments(animes, DayEntity.serializer())
46+
if (documentsToInsert.isNotEmpty()) {
47+
documents.addAll(documentsToInsert)
48+
schedules.insertMany(documentsToInsert)
49+
}
50+
}
5051

51-
val elements = parseTopDataToDocuments(response)
52-
if (elements.isNotEmpty()) schedules.insertMany(elements)
5352
timers.update(TimerKey.SCHEDULE)
5453

55-
call.respond(HttpStatusCode.OK, elements.documentWeekMapper())
54+
call.respond(HttpStatusCode.OK, documents.documentWeekMapper())
5655
} else {
5756
val elements = schedules.find().toList()
5857
call.respond(HttpStatusCode.OK, elements.documentWeekMapper())
@@ -78,7 +77,16 @@ class ScheduleService(
7877
)
7978

8079
private fun List<Document>.documentWeekMapper(): String {
81-
val directory = map { documentToScheduleDayEntity(it) }
82-
return Json.encodeToString(directory)
80+
val elements = map { documentToScheduleDayEntity(it) }
81+
82+
return Json.encodeToString(ScheduleData(
83+
monday = elements.filter { it.day == Day.MONDAY.name.lowercase() },
84+
tuesday = elements.filter { it.day == Day.TUESDAY.name.lowercase() },
85+
wednesday = elements.filter { it.day == Day.WEDNESDAY.name.lowercase() },
86+
thursday = elements.filter { it.day == Day.THURSDAY.name.lowercase() },
87+
friday = elements.filter { it.day == Day.FRIDAY.name.lowercase() },
88+
saturday = elements.filter { it.day == Day.SATURDAY.name.lowercase() },
89+
sunday = elements.filter { it.day == Day.SUNDAY.name.lowercase() }
90+
))
8391
}
8492
}

0 commit comments

Comments
 (0)