All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dslplatform.api.client.SearchableCompanion.scala Maven / Gradle / Ivy

package com.dslplatform.api.client

import com.dslplatform.api.patterns.Searchable
import com.dslplatform.api.patterns.ServiceLocator
import com.dslplatform.api.patterns.Specification

import scala.concurrent.Await
import scala.concurrent.duration.Duration
import scala.reflect.ClassTag

abstract class SearchableCompanion[TSearchable <: Searchable: ClassTag] {
  protected def domainProxy(locator: ServiceLocator): DomainProxy = locator.resolve[DomainProxy]

  def search(specification: Specification[TSearchable])(implicit locator: ServiceLocator, duration: Duration): IndexedSeq[TSearchable] =
    Await.result(domainProxy(locator).search(specification = Option(specification)), duration)

  def search(specification: Specification[TSearchable], limit: Int, offset: Int)(implicit locator: ServiceLocator, duration: Duration): IndexedSeq[TSearchable] =
    Await.result(domainProxy(locator).search(specification = Option(specification), limit = Some(limit), offset = Some(offset)), duration)

  def count(implicit locator: ServiceLocator, duration: Duration): Long =
    Await.result(domainProxy(locator).count[TSearchable](), duration)

  def count(specification: Specification[TSearchable])(implicit locator: ServiceLocator, duration: Duration): Long =
    Await.result(domainProxy(locator).count(specification = Option(specification)), duration)

  def findAll(implicit locator: ServiceLocator, duration: Duration): IndexedSeq[TSearchable] =
    Await.result[IndexedSeq[TSearchable]](domainProxy(locator).search[TSearchable](), duration)

  def findAll(limit: Int, offset: Int)(implicit locator: ServiceLocator, duration: Duration): IndexedSeq[TSearchable] =
    Await.result(domainProxy(locator).search[TSearchable](limit = Some(limit), offset = Some(offset)), duration)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy