package gr.grnet.aquarium.store
-import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.event.ResourceEvent
import gr.grnet.aquarium.AquariumException
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* An abstraction for Aquarium `ResourceEvent` stores.
* @author Georgios Gousios <gousiosg@gmail.com>.
*/
trait ResourceEventStore {
+ type ResourceEvent <: ResourceEventModel
+
+ def createResourceEventFromOther(event: ResourceEventModel): ResourceEvent
+
def clearResourceEvents(): Unit = {
throw new AquariumException("Unsupported operation")
}
- def storeResourceEvent(event: ResourceEvent): RecordID
+ def pingResourceEventStore(): Unit
+
+ def insertResourceEvent(event: ResourceEventModel): ResourceEvent
- def findResourceEventById(id: String): Maybe[ResourceEvent]
+ def findResourceEventById(id: String): Option[ResourceEvent]
def findResourceEventsByUserId(userId: String)(sortWith: Option[(ResourceEvent, ResourceEvent) => Boolean]): List[ResourceEvent]
/**
* Count and return the number of "out of sync" events for a billing month.
*/
- def countOutOfSyncEventsForBillingPeriod(userId: String, startMillis: Long, stopMillis: Long): Maybe[Long]
+ def countOutOfSyncEventsForBillingPeriod(userId: String, startMillis: Long, stopMillis: Long): Long
/**
* Finds all relevant resource events for the billing period.