foyer-dsi-assure-2035/api/src/lu/foyer/contracts/ContractEventRepositoryInMemory.scala
Paul-Henri Froidmont 49d6b6c8cc
Rename layer to live
2025-11-04 14:37:21 +01:00

22 lines
902 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 live = ZLayer.fromZIO(Ref.make(Map.empty).map(ContractEventRepositoryInMemory(_)))