diff --git a/common/src/main/scala/no/ndla/common/model/api/search/LearningResourceType.scala b/common/src/main/scala/no/ndla/common/model/api/search/LearningResourceType.scala index f4d7ab8424..38e4ac0e52 100644 --- a/common/src/main/scala/no/ndla/common/model/api/search/LearningResourceType.scala +++ b/common/src/main/scala/no/ndla/common/model/api/search/LearningResourceType.scala @@ -22,6 +22,7 @@ object LearningResourceType extends Enum[LearningResourceType] with CirceEnum[Le case object Article extends LearningResourceType("standard") case object TopicArticle extends LearningResourceType("topic-article") case object FrontpageArticle extends LearningResourceType("frontpage-article") + case object CaseArticle extends LearningResourceType("case-article") case object LearningPath extends LearningResourceType("learningpath") case object Concept extends LearningResourceType("concept") case object Gloss extends LearningResourceType("gloss") @@ -37,6 +38,7 @@ object LearningResourceType extends Enum[LearningResourceType] with CirceEnum[Le case ArticleType.Standard => Article case ArticleType.TopicArticle => TopicArticle case ArticleType.FrontpageArticle => FrontpageArticle + case ArticleType.CaseArticle => CaseArticle } } diff --git a/common/src/main/scala/no/ndla/common/model/domain/ArticleType.scala b/common/src/main/scala/no/ndla/common/model/domain/ArticleType.scala index 6c8cd42dfd..7252a748bc 100644 --- a/common/src/main/scala/no/ndla/common/model/domain/ArticleType.scala +++ b/common/src/main/scala/no/ndla/common/model/domain/ArticleType.scala @@ -20,6 +20,7 @@ object ArticleType extends Enum[ArticleType] with CirceEnum[ArticleType] { case object Standard extends ArticleType("standard") case object TopicArticle extends ArticleType("topic-article") case object FrontpageArticle extends ArticleType("frontpage-article") + case object CaseArticle extends ArticleType("case-article") implicit def schema: Schema[ArticleType] = schemaForEnumEntry[ArticleType] implicit def codec: PlainCodec[ArticleType] = plainCodecEnumEntry[ArticleType] diff --git a/common/src/main/scala/no/ndla/common/model/domain/ResourceType.scala b/common/src/main/scala/no/ndla/common/model/domain/ResourceType.scala index b0d0ee9d3c..e1fda72ead 100644 --- a/common/src/main/scala/no/ndla/common/model/domain/ResourceType.scala +++ b/common/src/main/scala/no/ndla/common/model/domain/ResourceType.scala @@ -29,6 +29,7 @@ object ResourceType extends Enum[ResourceType] with CirceEnum[ResourceType] { case object Image extends ResourceType("image") case object Learningpath extends ResourceType("learningpath") case object Multidisciplinary extends ResourceType("multidisciplinary") + case object Case extends ResourceType("case") case object Topic extends ResourceType("topic") case object Video extends ResourceType("video") } diff --git a/draft-api/src/main/scala/no/ndla/draftapi/repository/DraftRepository.scala b/draft-api/src/main/scala/no/ndla/draftapi/repository/DraftRepository.scala index 3df558ab10..e7b4e8c87e 100644 --- a/draft-api/src/main/scala/no/ndla/draftapi/repository/DraftRepository.scala +++ b/draft-api/src/main/scala/no/ndla/draftapi/repository/DraftRepository.scala @@ -80,7 +80,10 @@ class DraftRepository(using draftErrorHelpers: DraftErrorHelpers, clock: Clock) if (keepDraftData) article.priority else Priority.Unspecified, comments = - if (keepDraftData | article.articleType == ArticleType.TopicArticle) article.comments + if ( + keepDraftData | article.articleType == ArticleType.TopicArticle | article.articleType == ArticleType + .CaseArticle + ) article.comments else Seq.empty, ) dataObject = { diff --git a/draft-api/src/test/scala/no/ndla/draftapi/controller/DraftControllerTest.scala b/draft-api/src/test/scala/no/ndla/draftapi/controller/DraftControllerTest.scala index 4b23a9c743..3791d0860d 100644 --- a/draft-api/src/test/scala/no/ndla/draftapi/controller/DraftControllerTest.scala +++ b/draft-api/src/test/scala/no/ndla/draftapi/controller/DraftControllerTest.scala @@ -446,7 +446,7 @@ class DraftControllerTest extends UnitSuite with TestEnvironment with TapirContr .searchSettings .copy( searchLanguage = "*", - articleTypes = List("standard", "topic-article", "frontpage-article"), + articleTypes = List("standard", "topic-article", "frontpage-article", "case-article"), shouldScroll = true, sort = Sort.ByTitleAsc, ) diff --git a/myndla-api/src/main/scala/no/ndla/myndlaapi/controller/StatsController.scala b/myndla-api/src/main/scala/no/ndla/myndlaapi/controller/StatsController.scala index 9c3d2650ba..c6e61f04a6 100644 --- a/myndla-api/src/main/scala/no/ndla/myndlaapi/controller/StatsController.scala +++ b/myndla-api/src/main/scala/no/ndla/myndlaapi/controller/StatsController.scala @@ -45,7 +45,7 @@ class StatsController(using } private val pathResourceType = path[CommaSeparated[String]]("resourceType").description( - s"The type of the resource to look up. Comma separated list to support ${ResourceType.Multidisciplinary}. Possible values ${ResourceType.values.mkString(", ")}" + s"The type of the resource to look up. Separate with comma to search for several types simultaneously. Possible values ${ResourceType.values.mkString(", ")}" ) private val pathResourceIds = path[CommaSeparated[String]]("resourceIds").description("IDs of the resources to look up") diff --git a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderWriteService.scala b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderWriteService.scala index 51b73359f3..c8a401c8ee 100644 --- a/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderWriteService.scala +++ b/myndla-api/src/main/scala/no/ndla/myndlaapi/service/FolderWriteService.scala @@ -14,7 +14,7 @@ import no.ndla.common.Clock import no.ndla.common.errors.{AccessDeniedException, NotFoundException, ValidationException} import no.ndla.common.implicits.* import no.ndla.common.model.NDLADate -import no.ndla.common.model.domain.ResourceType +import no.ndla.common.model.domain.ResourceType.{Audio, Concept, Image, Learningpath, Video} import no.ndla.common.model.domain.myndla.{FolderStatus, MyNDLAUser} import no.ndla.database.DBUtility import no.ndla.myndlaapi.integration.SearchApiClient @@ -603,12 +603,10 @@ class FolderWriteService(using private def updateSearchApi(resource: domain.Resource): Unit = { resource.resourceType match { - case ResourceType.Multidisciplinary => searchApiClient.reindexDraft(resource.resourceId) - case ResourceType.Article => searchApiClient.reindexDraft(resource.resourceId) - case ResourceType.Topic => searchApiClient.reindexDraft(resource.resourceId) - case ResourceType.Learningpath => searchApiClient.reindexLearningpath(resource.resourceId) - case ResourceType.Concept => searchApiClient.reindexConcept(resource.resourceId) - case ResourceType.Audio | ResourceType.Image | ResourceType.Video => + case Audio | Image | Video => () + case Learningpath => searchApiClient.reindexLearningpath(resource.resourceId) + case Concept => searchApiClient.reindexConcept(resource.resourceId) + case _ => searchApiClient.reindexDraft(resource.resourceId) } } diff --git a/search-api/src/main/scala/no/ndla/searchapi/service/search/SearchConverterService.scala b/search-api/src/main/scala/no/ndla/searchapi/service/search/SearchConverterService.scala index b90ad1fb82..d8f1750688 100644 --- a/search-api/src/main/scala/no/ndla/searchapi/service/search/SearchConverterService.scala +++ b/search-api/src/main/scala/no/ndla/searchapi/service/search/SearchConverterService.scala @@ -156,6 +156,7 @@ class SearchConverterService(using "about-ndla", "om-ndla-artikkel", ) + case LearningResourceType.CaseArticle => List("case", "case-article", "tverrfaglig", "tverrfaglig case") case LearningResourceType.LearningPath => List("learningpath", "læringssti", "sti", "læringsti") case LearningResourceType.Concept | LearningResourceType.Gloss => List("concept", "forklaring", "konsept", "glose", "gloss") @@ -586,6 +587,11 @@ class SearchConverterService(using "nn" -> "Om-NDLA-artikkel", "en" -> "About-NDLA article", ) + case ArticleType.CaseArticle => SearchableLanguageValues.from( + "nb" -> "Tverrfaglig case", + "nn" -> "Tverrfaglig case", + "en" -> "Multidisciplinary case", + ) } }