Skip to content

Commit b04247a

Browse files
committed
✨ Fixed blocked request ✨
1 parent 3ed3c0c commit b04247a

File tree

3 files changed

+106
-73
lines changed

3 files changed

+106
-73
lines changed

src/main/kotlin/club/anifox/backend/service/anime/components/block/AnimeBlockComponent.kt

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,37 @@ class AnimeBlockComponent {
5454
val animeEntity = anime[0]
5555
val shikimoriIdEntity = animeEntity.shikimoriId
5656

57-
entityManager.createQuery("DELETE FROM AnimeRelatedTable r WHERE r.anime.id = :animeId OR r.relatedAnime.id = :animeId")
57+
// Delete franchise relationships in all directions
58+
entityManager.createQuery(
59+
"""
60+
DELETE FROM AnimeFranchiseTable f
61+
WHERE f.anime.id = :animeId
62+
OR f.source.id = :animeId
63+
OR f.target.id = :animeId
64+
""",
65+
)
5866
.setParameter("animeId", animeEntity.id)
5967
.executeUpdate()
6068

61-
entityManager.createQuery("DELETE FROM AnimeSimilarTable s WHERE s.anime.id = :animeId OR s.similarAnime.id = :animeId")
69+
// Delete related anime relationships in both directions
70+
entityManager.createQuery(
71+
"""
72+
DELETE FROM AnimeRelatedTable r
73+
WHERE r.anime.id = :animeId
74+
OR r.relatedAnime.id = :animeId
75+
""",
76+
)
77+
.setParameter("animeId", animeEntity.id)
78+
.executeUpdate()
79+
80+
// Delete similar anime relationships in both directions
81+
entityManager.createQuery(
82+
"""
83+
DELETE FROM AnimeSimilarTable s
84+
WHERE s.anime.id = :animeId
85+
OR s.similarAnime.id = :animeId
86+
""",
87+
)
6288
.setParameter("animeId", animeEntity.id)
6389
.executeUpdate()
6490

@@ -78,6 +104,8 @@ class AnimeBlockComponent {
78104
episodes.clear()
79105
screenshots.clear()
80106
franchiseMultiple.clear()
107+
similar.clear()
108+
related.clear()
81109
ids = AnimeIdsTable()
82110
images = AnimeImagesTable()
83111
}

src/main/kotlin/club/anifox/backend/service/anime/components/kodik/KodikComponent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import io.ktor.http.*
1010
import org.springframework.beans.factory.annotation.Autowired
1111
import org.springframework.beans.factory.annotation.Value
1212
import org.springframework.stereotype.Component
13+
import java.time.LocalDate
1314

1415
@Component
1516
class KodikComponent {

src/main/kotlin/club/anifox/backend/service/anime/components/parser/AnimeParseComponent.kt

Lines changed: 75 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import club.anifox.backend.domain.dto.anime.shikimori.ShikimoriAnimeIdDto
77
import club.anifox.backend.domain.dto.anime.shikimori.ShikimoriDto
88
import club.anifox.backend.domain.dto.anime.shikimori.ShikimoriMangaIdDto
99
import club.anifox.backend.domain.enums.anime.AnimeExternalLinksType
10-
import club.anifox.backend.domain.enums.anime.AnimeRelationFranchise
1110
import club.anifox.backend.domain.enums.anime.AnimeSeason
1211
import club.anifox.backend.domain.enums.anime.AnimeStatus
1312
import club.anifox.backend.domain.enums.anime.AnimeType
@@ -124,6 +123,7 @@ class AnimeParseComponent(
124123

125124
do {
126125
val batchToProcess = ar.result
126+
.shuffled()
127127
.distinctBy { it.shikimoriId }
128128
.filter { !shikimoriIds.contains(it.shikimoriId) }
129129

@@ -170,8 +170,8 @@ class AnimeParseComponent(
170170
fun integrations() {
171171
runBlocking {
172172
val integrationJobs = listOf(
173-
// async { integrateSimilarRelatedFranchise() },
174-
async { integrateCharacters() },
173+
async { integrateSimilarRelatedFranchise() },
174+
// async { integrateCharacters() },
175175
)
176176
integrationJobs.awaitAll()
177177
}
@@ -203,72 +203,72 @@ class AnimeParseComponent(
203203
.resultList
204204
.first()
205205

206-
val similarShikimoriIds = shikimoriComponent.fetchSimilar(shikimoriId)
206+
// val similarShikimoriIds = shikimoriComponent.fetchSimilar(shikimoriId)
207207
val relatedShikimori = shikimoriComponent.fetchRelated(shikimoriId)
208-
val franchiseShikimori = shikimoriComponent.fetchFranchise(shikimoriId)
209-
210-
val similar = animeSimilarRepository.saveAll(
211-
similarShikimoriIds.mapNotNull { id ->
212-
val animeToSimilar = animeRepository.findByShikimoriId(id)
213-
if (animeToSimilar.isPresent) {
214-
val existingSimilar = anime.similar.any { it.similarAnime.id == animeToSimilar.get().id }
215-
if (!existingSimilar) {
216-
AnimeSimilarTable(
217-
anime = anime,
218-
similarAnime = animeToSimilar.get(),
219-
)
220-
} else {
221-
null
222-
}
223-
} else {
224-
null
225-
}
226-
},
227-
)
228-
229-
val franchise = if (anime.franchise != null) {
230-
animeFranchiseRepository.saveAll(
231-
franchiseShikimori.links.mapNotNull { fran ->
232-
val animeToTarget = animeRepository.findByShikimoriId(fran.targetId)
233-
val animeToSource = animeRepository.findByShikimoriId(fran.sourceId)
234-
if (animeToTarget.isPresent && animeToSource.isPresent) {
235-
val existingFranchise = anime.franchiseMultiple.any {
236-
it.target.shikimoriId == animeToTarget.get().shikimoriId &&
237-
it.source.shikimoriId == animeToSource.get().shikimoriId
238-
}
239-
if (!existingFranchise) {
240-
val relationType = when (fran.relation) {
241-
"sequel" -> AnimeRelationFranchise.Sequel
242-
"prequel" -> AnimeRelationFranchise.Prequel
243-
"side_story" -> AnimeRelationFranchise.SideStory
244-
"parent_story", "full_story" -> AnimeRelationFranchise.SideStory
245-
"summary" -> AnimeRelationFranchise.Summary
246-
"alternative_version" -> AnimeRelationFranchise.AlternativeVersion
247-
"adaptation" -> AnimeRelationFranchise.Adaptation
248-
"alternative_setting" -> AnimeRelationFranchise.AlternativeSetting
249-
"spin_off" -> AnimeRelationFranchise.SpinOff
250-
"character" -> AnimeRelationFranchise.Character
251-
else -> AnimeRelationFranchise.Other
252-
}
253-
AnimeFranchiseTable(
254-
anime = anime,
255-
source = animeToSource.get(),
256-
target = animeToTarget.get(),
257-
relationType = relationType,
258-
relationTypeRus = relationType.russian,
259-
urlPath = anime.franchise!!,
260-
)
261-
} else {
262-
null
263-
}
264-
} else {
265-
null
266-
}
267-
},
268-
)
269-
} else {
270-
null
271-
}
208+
// val franchiseShikimori = shikimoriComponent.fetchFranchise(shikimoriId)
209+
210+
// val similar = animeSimilarRepository.saveAll(
211+
// similarShikimoriIds.mapNotNull { id ->
212+
// val animeToSimilar = animeRepository.findByShikimoriId(id)
213+
// if (animeToSimilar.isPresent) {
214+
// val existingSimilar = anime.similar.any { it.similarAnime.id == animeToSimilar.get().id }
215+
// if (!existingSimilar) {
216+
// AnimeSimilarTable(
217+
// anime = anime,
218+
// similarAnime = animeToSimilar.get(),
219+
// )
220+
// } else {
221+
// null
222+
// }
223+
// } else {
224+
// null
225+
// }
226+
// },
227+
// )
228+
//
229+
// val franchise = if (anime.franchise != null) {
230+
// animeFranchiseRepository.saveAll(
231+
// franchiseShikimori.links.mapNotNull { fran ->
232+
// val animeToTarget = animeRepository.findByShikimoriId(fran.targetId)
233+
// val animeToSource = animeRepository.findByShikimoriId(fran.sourceId)
234+
// if (animeToTarget.isPresent && animeToSource.isPresent) {
235+
// val existingFranchise = anime.franchiseMultiple.any {
236+
// it.target.shikimoriId == animeToTarget.get().shikimoriId &&
237+
// it.source.shikimoriId == animeToSource.get().shikimoriId
238+
// }
239+
// if (!existingFranchise) {
240+
// val relationType = when (fran.relation) {
241+
// "sequel" -> AnimeRelationFranchise.Sequel
242+
// "prequel" -> AnimeRelationFranchise.Prequel
243+
// "side_story" -> AnimeRelationFranchise.SideStory
244+
// "parent_story", "full_story" -> AnimeRelationFranchise.SideStory
245+
// "summary" -> AnimeRelationFranchise.Summary
246+
// "alternative_version" -> AnimeRelationFranchise.AlternativeVersion
247+
// "adaptation" -> AnimeRelationFranchise.Adaptation
248+
// "alternative_setting" -> AnimeRelationFranchise.AlternativeSetting
249+
// "spin_off" -> AnimeRelationFranchise.SpinOff
250+
// "character" -> AnimeRelationFranchise.Character
251+
// else -> AnimeRelationFranchise.Other
252+
// }
253+
// AnimeFranchiseTable(
254+
// anime = anime,
255+
// source = animeToSource.get(),
256+
// target = animeToTarget.get(),
257+
// relationType = relationType,
258+
// relationTypeRus = relationType.russian,
259+
// urlPath = anime.franchise!!,
260+
// )
261+
// } else {
262+
// null
263+
// }
264+
// } else {
265+
// null
266+
// }
267+
// },
268+
// )
269+
// } else {
270+
// null
271+
// }
272272

273273
val related = animeRelatedRepository.saveAll(
274274
relatedShikimori.mapNotNull { relation ->
@@ -295,10 +295,14 @@ class AnimeParseComponent(
295295
},
296296
)
297297

298-
if (similar.isNotEmpty() || related.isNotEmpty() || !franchise.isNullOrEmpty()) {
299-
anime.addSimilar(similar)
298+
// if (similar.isNotEmpty() || related.isNotEmpty() || !franchise.isNullOrEmpty()) {
299+
// anime.addSimilar(similar)
300+
// anime.addRelation(related)
301+
// franchise?.let { anime.addFranchiseMultiple(it) }
302+
// animeRepository.saveAndFlush(anime)
303+
// }
304+
if (related.isNotEmpty()) {
300305
anime.addRelation(related)
301-
franchise?.let { anime.addFranchiseMultiple(it) }
302306
animeRepository.saveAndFlush(anime)
303307
}
304308
} catch (e: Exception) {

0 commit comments

Comments
 (0)