def register_new_drivers_license()

in pyqldbsamples/register_drivers_license.py [0:0]


def register_new_drivers_license(driver, person, new_license):
    """
    Register a new person and a new driver's license.

    :type driver: :py:class:`pyqldb.driver.qldb_driver.QldbDriver`
    :param driver: An instance of the QldbDriver class.

    :type person: dict
    :param person: The person to register.

    :type new_license: dict
    :param new_license: The driver's license to register.
    """
    person_id = register_new_person(driver, person)
    if driver.execute_lambda(lambda executor: person_has_drivers_license(executor, person_id)):
        gov_id = person['GovId']
        logger.info("Person with government ID '{}' already has a license! No new license added.".format(gov_id))
    else:
        logger.info("Registering new driver's license...")
        # Update the new license with new driver's unique PersonId.
        new_license.update({'PersonId': str(person_id)})
        statement = 'INSERT INTO DriversLicense ?'
        driver.execute_lambda(lambda executor: executor.execute_statement(statement, convert_object_to_ion(new_license)))

        cursor = driver.execute_lambda(lambda executor: lookup_drivers_license_for_person(executor, person_id))
        try:
            next(cursor)
            logger.info('Successfully registered new driver.')
            return
        except StopIteration:
            logger.info('Problem occurred while inserting new license, please review the results.')
            return