def registerNew()

in path-manager/app/services/PathStore.scala [29:58]


  def registerNew(path: String, system: String) = {

    logger.debug(s"Registering new path [$path]")

    if (PathValidator.isInvalid(path)) {
      Left(s"invalid path [$path]")
    } else {
      val existingPath = Option(Dynamo.pathsTable.getItem("path", path)).map(PathRecord(_))

      existingPath match {
        case Some(pr) => {
          logger.warn(s"Failed to register new path [$path], already claimed by id [${pr.identifier}]")
          Left("path already in use")
        }
        case None => {
          val id = IdentifierSequence.getNextId
          logger.debug(s"generated id [$id] path [$path]")
          val pathRecord = PathRecord(path, id, CANONICAL_PATH_TYPE, system)
          val shortUrlPathRecord = PathRecord(ShortUrlEncoder.generateShortUrlPath(id), id, "short", system)

          putPathItemAndAwaitIndexUpdate(pathRecord)
          logger.debug(s"Adding new short url record for [$id]. short path[${shortUrlPathRecord.path }]")
          Dynamo.pathsTable.putItem(shortUrlPathRecord.asDynamoItem)

          logger.debug(s"Registered path [$path] for id [$id] successfully")
          Right(List(pathRecord, shortUrlPathRecord).groupBy(_.`type`))
        }
      }
    }
  }