fun generateUniqueDescriptions()

in core/package/src/main/kotlin/io/klibs/core/pckg/service/PackageDescriptionService.kt [24:56]


    fun generateUniqueDescriptions() {
        logger.info("Starting processing duplicate descriptions")

        val newDescriptions = mutableMapOf<Long, String>()

        var duplicateDescriptions = packageRepository.findDuplicateDescriptions(limit = 10)

        if (duplicateDescriptions.isEmpty()) {
            logger.warn("No duplicate descriptions found to process")
            return
        }

        while (duplicateDescriptions.isNotEmpty()) {
            for (description in duplicateDescriptions) {
                val packages = packageRepository.findAllByDescription(description)
                val batchResults = packageDescriptionBatchService.generateUniqueDescriptionsForBatch(description, packages)
                newDescriptions.putAll(batchResults)
            }

            logger.info(
                """
                    Generated ${newDescriptions.size} unique descriptions for ${duplicateDescriptions.size} descriptions:
                    ${newDescriptions.entries.joinToString("\n") { "${it.key}: ${it.value}" }}
                """.trimIndent()
                    )

            newDescriptions.clear()

            duplicateDescriptions = packageRepository.findDuplicateDescriptions(limit = 10)
        }

        logger.info("Finished processing duplicate descriptions")
    }