in registration/app/registration/services/DatabaseRegistrar.scala [21:56]
override def register(deviceToken: DeviceToken, registration: Registration): RegistrarResponse[RegistrationResponse] = {
def toDBRegistration(topic: Topic) = db.Registration(
device = db.Device(deviceToken.token, registration.platform),
topic = db.Topic(topic.toString),
shard = db.Shard.fromToken(deviceToken),
buildTier = db.BuildTier.chooseTier(
buildTier = registration.buildTier,
platform = registration.platform,
appVersion = registration.appVersion
)
)
val dbRegistrations = registration.topics.toList.map(toDBRegistration)
val insertedRegistrations = registrationService.registerDevice(deviceToken.token, dbRegistrations)
val latencyStart = System.currentTimeMillis
val result = insertedRegistrations.map { _ =>
Right(RegistrationResponse(
deviceId = deviceToken.token,
platform = registration.platform,
topics = registration.topics,
provider = Provider.Guardian
))
}.unsafeToFuture()
result.onComplete {
case Success(_) =>
metrics.send(MetricDataPoint(name = "SuccessfulRegistrationInsertion", value = 1d, unit = StandardUnit.Count))
metrics.send(MetricDataPoint(name = "RegistrationInsertionLatency", value = (System.currentTimeMillis - latencyStart).toDouble, unit = StandardUnit.Milliseconds))
case Failure(_) =>
metrics.send(MetricDataPoint(name = "FailedRegistrationInsertion", value = 1d, unit = StandardUnit.Count))
}
result
}