override def register()

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
  }