22 lines
903 B
Scala
22 lines
903 B
Scala
package lu.foyer
|
|
package contracts
|
|
|
|
import zio.*
|
|
|
|
class ContractEventRepositoryInMemory(events: Ref[Map[String, Event[ContractEvent]]])
|
|
extends EventRepository[ContractEvent]
|
|
with InMemoryRepository[Event[ContractEvent]](events):
|
|
def fetchOne(entityId: String, eventId: String): Task[Option[Event[ContractEvent]]] =
|
|
events.get.map(_.get(eventId))
|
|
def fetchMany(entityId: String, page: Page): Task[Paged[Event[ContractEvent]]] =
|
|
events.get
|
|
.map(entities =>
|
|
val items = entities.values
|
|
.filter(_.entityId == entityId)
|
|
.drop(page.number.getOrElse(0) * page.size.getOrElse(50))
|
|
.take(page.size.getOrElse(50))
|
|
Paged(items.toList, if page.totals.getOrElse(true) then Some(entities.size) else None)
|
|
)
|
|
|
|
object ContractEventRepositoryInMemory:
|
|
val layer = ZLayer.fromZIO(Ref.make(Map.empty).map(ContractEventRepositoryInMemory(_)))
|