Skip to content

Commit

Permalink
Migrate SearchParams to CE (#4452)
Browse files Browse the repository at this point in the history
  • Loading branch information
olivergrabinski authored Nov 1, 2023
1 parent feeea5e commit a3e9f4c
Show file tree
Hide file tree
Showing 15 changed files with 49 additions and 188 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ final class CompositeViews private (
): IO[UnscoredSearchResults[ViewResource]] = {
val scope = params.project.fold[Scope](Scope.Root)(ref => Scope.Project(ref))
SearchResults(
log.currentStates(scope, _.toResource).evalFilter(params.matches),
log.currentStates(scope, _.toResource).evalFilter(params.matches(_).toTask),
pagination,
ordering
).span("listCompositeViews")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package ch.epfl.bluebrain.nexus.delta.plugins.compositeviews.model

import cats.effect.IO
import ch.epfl.bluebrain.nexus.delta.plugins.compositeviews.model
import ch.epfl.bluebrain.nexus.delta.rdf.IriOrBNode.Iri
import ch.epfl.bluebrain.nexus.delta.sourcing.model.Identity.Subject
import ch.epfl.bluebrain.nexus.delta.sdk.model.search.SearchParams
import ch.epfl.bluebrain.nexus.delta.sourcing.model.ResourceRef
import ch.epfl.bluebrain.nexus.delta.sourcing.model.ProjectRef
import monix.bio.UIO
import ch.epfl.bluebrain.nexus.delta.sourcing.model.Identity.Subject
import ch.epfl.bluebrain.nexus.delta.sourcing.model.{ProjectRef, ResourceRef}

/**
* Search parameters for Composite views.
Expand All @@ -33,12 +32,12 @@ final case class CompositeViewSearchParams(
createdBy: Option[Subject] = None,
updatedBy: Option[Subject] = None,
types: Set[Iri] = Set.empty,
filter: CompositeView => UIO[Boolean]
filter: CompositeView => IO[Boolean]
) extends SearchParams[CompositeView] {

override val schema: Option[ResourceRef] = Some(model.schema)

override def matches(resource: ViewResource): UIO[Boolean] =
override def matches(resource: ViewResource): IO[Boolean] =
super.matches(resource).map(_ && project.forall(_ == resource.value.project))

}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ch.epfl.bluebrain.nexus.delta.sdk.model.search

import cats.effect.IO
import ch.epfl.bluebrain.nexus.delta.rdf.IriOrBNode.Iri
import ch.epfl.bluebrain.nexus.delta.rdf.Vocabulary.{nxv, schemas => nxvschemas}
import ch.epfl.bluebrain.nexus.delta.sdk.model.ResourceF
Expand All @@ -10,7 +11,6 @@ import ch.epfl.bluebrain.nexus.delta.sdk.resolvers.model.Resolver
import ch.epfl.bluebrain.nexus.delta.sourcing.model.Identity.Subject
import ch.epfl.bluebrain.nexus.delta.sourcing.model.ResourceRef.Latest
import ch.epfl.bluebrain.nexus.delta.sourcing.model.{Label, ProjectRef, ResourceRef}
import monix.bio.UIO

/**
* Enumeration of the possible Search Parameters
Expand All @@ -22,16 +22,16 @@ trait SearchParams[A] {
def updatedBy: Option[Subject]
def types: Set[Iri]
def schema: Option[ResourceRef]
def filter: A => UIO[Boolean]
def filter: A => IO[Boolean]

/**
* Checks whether a ''resource'' matches the current [[SearchParams]].
*
* @param resource
* a resource
*/
def matches(resource: ResourceF[A]): UIO[Boolean] =
UIO
def matches(resource: ResourceF[A]): IO[Boolean] =
IO
.pure(
rev.forall(_ == resource.rev) &&
deprecated.forall(_ == resource.deprecated) &&
Expand Down Expand Up @@ -67,12 +67,12 @@ object SearchParams {
rev: Option[Int] = None,
createdBy: Option[Subject] = None,
updatedBy: Option[Subject] = None,
filter: Realm => UIO[Boolean] = _ => UIO.pure(true)
filter: Realm => IO[Boolean] = _ => IO.pure(true)
) extends SearchParams[Realm] {
override val types: Set[Iri] = Set(nxv.Realm)
override val schema: Option[ResourceRef] = Some(Latest(nxvschemas.realms))

override def matches(resource: ResourceF[Realm]): UIO[Boolean] =
override def matches(resource: ResourceF[Realm]): IO[Boolean] =
super.matches(resource).map(_ && issuer.forall(_ == resource.value.issuer))
}

Expand Down Expand Up @@ -106,11 +106,11 @@ object SearchParams {
createdBy: Option[Subject] = None,
updatedBy: Option[Subject] = None,
label: Option[String] = None,
filter: Organization => UIO[Boolean]
filter: Organization => IO[Boolean]
) extends SearchParams[Organization] {
override val types: Set[Iri] = Set(nxv.Organization)
override val schema: Option[ResourceRef] = Some(Latest(nxvschemas.organizations))
override def matches(resource: ResourceF[Organization]): UIO[Boolean] =
override val types: Set[Iri] = Set(nxv.Organization)
override val schema: Option[ResourceRef] = Some(Latest(nxvschemas.organizations))
override def matches(resource: ResourceF[Organization]): IO[Boolean] =
super
.matches(resource)
.map(_ && label.forall(lb => resource.value.label.value.toLowerCase.contains(lb.toLowerCase.trim)))
Expand Down Expand Up @@ -141,12 +141,12 @@ object SearchParams {
createdBy: Option[Subject] = None,
updatedBy: Option[Subject] = None,
label: Option[String] = None,
filter: Project => UIO[Boolean]
filter: Project => IO[Boolean]
) extends SearchParams[Project] {
override val types: Set[Iri] = Set(nxv.Project)
override val schema: Option[ResourceRef] = Some(Latest(nxvschemas.projects))

override def matches(resource: ResourceF[Project]): UIO[Boolean] =
override def matches(resource: ResourceF[Project]): IO[Boolean] =
super
.matches(resource)
.map(
Expand Down Expand Up @@ -181,11 +181,11 @@ object SearchParams {
createdBy: Option[Subject] = None,
updatedBy: Option[Subject] = None,
types: Set[Iri] = Set(nxv.Resolver),
filter: Resolver => UIO[Boolean]
filter: Resolver => IO[Boolean]
) extends SearchParams[Resolver] {
override val schema: Option[ResourceRef] = Some(Latest(nxvschemas.resolvers))

override def matches(resource: ResourceF[Resolver]): UIO[Boolean] =
override def matches(resource: ResourceF[Resolver]): IO[Boolean] =
super.matches(resource).map(_ && project.forall(_ == resource.value.project))

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ final class OrganizationsImpl private (
log
.currentStates(_.toResource)
.translate(ioToTaskK)
.evalFilter(params.matches),
.evalFilter(params.matches(_).toUIO),
pagination,
ordering
).span("listOrganizations")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ final class ProjectsImpl private (
SearchResults(
log
.currentStates(params.organization.fold(Scope.root)(Scope.Org), _.toResource(defaultApiMappings))
.evalFilter(params.matches),
.evalFilter(params.matches(_).toUIO),
pagination,
ordering
).span("listProjects")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ final class RealmsImpl private (log: RealmsLog) extends Realms {
ordering: Ordering[RealmResource]
): IO[SearchResults.UnscoredSearchResults[RealmResource]] =
SearchResults(
log.currentStates(_.toResource).translate(ioToTaskK).evalFilter(params.matches),
log.currentStates(_.toResource).translate(ioToTaskK).evalFilter(params.matches(_).toUIO),
pagination,
ordering
).span("listRealms")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import ch.epfl.bluebrain.nexus.delta.sdk.resolvers.model.ResourceResolutionRepor
import ch.epfl.bluebrain.nexus.delta.sdk.resolvers.model.{Resolver, ResolverRejection, ResolverResolutionRejection, ResourceResolutionReport}
import ch.epfl.bluebrain.nexus.delta.sdk.{ResolverResource, ResourceShifts}
import ch.epfl.bluebrain.nexus.delta.sourcing.model.{Identity, ProjectRef, ResourceRef}
import monix.bio.{IO => BIO}

import java.time.Instant
import scala.collection.immutable.VectorMap
Expand Down Expand Up @@ -233,7 +232,7 @@ object ResolverResolution {

type ResolverResolutionResult[R] = (ResolverReport, Option[R])

private val resolverSearchParams = ResolverSearchParams(deprecated = Some(false), filter = _ => BIO.pure(true))
private val resolverSearchParams = ResolverSearchParams(deprecated = Some(false), filter = _ => IO.pure(true))

private val resolverOrdering: Ordering[ResolverResource] = Ordering[Instant] on (r => r.createdAt)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ final class ResolversImpl private (
): IO[UnscoredSearchResults[ResolverResource]] = {
val scope = params.project.fold[Scope](Scope.Root)(ref => Scope.Project(ref))
SearchResults(
log.currentStates(scope, _.toResource).evalFilter(params.matches),
log.currentStates(scope, _.toResource).evalFilter(params.matches(_).toUIO),
pagination,
ordering
).span("listResolvers")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package ch.epfl.bluebrain.nexus.delta.sdk.model.search

import cats.effect.IO
import ch.epfl.bluebrain.nexus.delta.sdk.generators.{OrganizationGen, ProjectGen, RealmGen, WellKnownGen}
import ch.epfl.bluebrain.nexus.delta.sdk.model.Name
import ch.epfl.bluebrain.nexus.delta.sdk.model.search.SearchParams.{OrganizationSearchParams, ProjectSearchParams, RealmSearchParams}
import ch.epfl.bluebrain.nexus.delta.sourcing.model.Identity.{Anonymous, User}
import ch.epfl.bluebrain.nexus.delta.sourcing.model.Label
import ch.epfl.bluebrain.nexus.testkit.scalatest.bio.BioSpec
import monix.bio.UIO
import ch.epfl.bluebrain.nexus.testkit.scalatest.ce.CatsEffectSpec

class SearchParamsSpec extends BioSpec {
class SearchParamsSpec extends CatsEffectSpec {

private val subject = User("myuser", Label.unsafe("myrealm"))

Expand All @@ -22,7 +22,7 @@ class SearchParamsSpec extends BioSpec {
rev = Some(1),
createdBy = Some(subject),
updatedBy = Some(subject),
r => UIO.pure(r.name == resource.value.name)
r => IO.pure(r.name == resource.value.name)
)

"match a realm resource" in {
Expand Down Expand Up @@ -52,17 +52,17 @@ class SearchParamsSpec extends BioSpec {
createdBy = Some(subject),
updatedBy = Some(subject),
label = Some("myorg"),
_ => UIO.pure(true)
_ => IO.pure(true)
)
val resource = OrganizationGen.resourceFor(OrganizationGen.organization("myorg"), 1, subject)

"match an organization resource" in {
forAll(
List(
searchWithAllParams,
OrganizationSearchParams(label = Some("my"), filter = _ => UIO.pure(true)),
OrganizationSearchParams(filter = _ => UIO.pure(true)),
OrganizationSearchParams(rev = Some(1), filter = _ => UIO.pure(true))
OrganizationSearchParams(label = Some("my"), filter = _ => IO.pure(true)),
OrganizationSearchParams(filter = _ => IO.pure(true)),
OrganizationSearchParams(rev = Some(1), filter = _ => IO.pure(true))
)
) { search =>
search.matches(resource).accepted shouldEqual true
Expand Down Expand Up @@ -91,17 +91,17 @@ class SearchParamsSpec extends BioSpec {
createdBy = Some(subject),
updatedBy = Some(subject),
label = Some("myproj"),
_ => UIO.pure(true)
_ => IO.pure(true)
)
val resource = ProjectGen.resourceFor(ProjectGen.project("myorg", "myproj"), 1, subject)

"match a project resource" in {
forAll(
List(
searchWithAllParams,
ProjectSearchParams(label = Some("my"), filter = _ => UIO.pure(true)),
ProjectSearchParams(filter = _ => UIO.pure(true)),
ProjectSearchParams(rev = Some(1), filter = _ => UIO.pure(true))
ProjectSearchParams(label = Some("my"), filter = _ => IO.pure(true)),
ProjectSearchParams(filter = _ => IO.pure(true)),
ProjectSearchParams(rev = Some(1), filter = _ => IO.pure(true))
)
) { search =>
search.matches(resource).accepted shouldEqual true
Expand Down
Loading

0 comments on commit a3e9f4c

Please sign in to comment.