ElectronicBabylonianLiterature/ebl-frontend

View on GitHub
src/afo-register/application/AfoRegisterService.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import Promise from 'bluebird'
import AfoRegisterRecord, {
  AfoRegisterRecordSuggestion,
} from 'afo-register/domain/Record'
import AfoRegisterRepository from 'afo-register/infrastructure/AfoRegisterRepository'
import FragmentService from 'fragmentarium/application/FragmentService'

export interface afoRegisterSearch {
  search(query: string): Promise<readonly AfoRegisterRecord[]>
  searchSuggestions(
    query: string
  ): Promise<readonly AfoRegisterRecordSuggestion[]>
}

export default class AfoRegisterService implements afoRegisterSearch {
  private readonly afoRegisterRepository: AfoRegisterRepository

  constructor(afoRegisterRepository: AfoRegisterRepository) {
    this.afoRegisterRepository = afoRegisterRepository
  }

  search(
    query: string,
    fragmentService?: FragmentService
  ): Promise<readonly AfoRegisterRecord[]> {
    return this.afoRegisterRepository.search(query, fragmentService)
  }

  searchTextsAndNumbers(
    query: readonly string[]
  ): Promise<readonly AfoRegisterRecord[]> {
    return this.afoRegisterRepository.searchTextsAndNumbers(query)
  }

  searchSuggestions(
    query: string
  ): Promise<readonly AfoRegisterRecordSuggestion[]> {
    return this.afoRegisterRepository.searchSuggestions(query)
  }
}