Расширение черты MacWire Factory и хранилище - PullRequest
0 голосов
/ 26 ноября 2018

Создание приложения Lagom с использованием подхода DDD .Мы выделили черту FactoryService.scala, имеющую Создать и Вставить , в то время как черта RepositoryService.scala включает Чтение , Обновление и Удалить команды.Теперь возникает проблема, так как при реализации источников событий у нас может быть только один метод .setPrepare () в классе EventProcessor.scala.Таким образом, в идеале метод .setPrepare () должен содержать все команды для обновления, удаления и вставки, но, как мы разделили на фабрике и в репозитории.Это означает, что у нас есть один .setPrepare () для FactoryService и один .setPrepare () для RepositoryService.Теперь два .setPrepare () не могут работать вместе, только последние триггеры.

Наш обходной путь должен был иметь такую ​​черту, как DatabaseService , которая расширена RepositoryService и FactoryService, как показано ниже:

trait DatabaseService {
      def createPreparedStatements: Future[Done]
}

trait RepositoryService extends DatabaseService {
      override def createPreparedStatements: Future[Done]
}

trait FactoryService extends DatabaseService {
      override def createPreparedStatements: Future[Done]
}

Теперь у нас есть две разные реализации для createPreparedStatements in

  • RepositoryServiceImpl и

  • FactoryServiceImpl

DatabaseService , RepositoryService и FactoryService вводится другим классом, скажем Helper.scala .

Теперь при выполнении sbt runAll выдается ошибка:

Найдено несколько значений типа [com.impl.db.DatabaseService]: [List (репозиторий, фабрика, база данных)]

lazy val helper: Helper = wire [Helper]

                     ^
...