def main(ledger_name=Constants.LEDGER_NAME):
    """
    Register a new driver's license.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            person = {
                'FirstName': 'Kate',
                'LastName': 'Mulberry',
                'Address': '22 Commercial Drive, Blaine, WA, 97722',
                'DOB': datetime(1995, 2, 9),
                'GovId': 'AQQ17B2342',
                'GovIdType': 'Passport'
            }
            drivers_license = {
                'PersonId': '',
                'LicenseNumber': '112 360 PXJ',
                'LicenseType': 'Full',
                'ValidFromDate': datetime(2018, 6, 30),
                'ValidToDate': datetime(2022, 10, 30)
            }

            register_new_drivers_license(driver, person, drivers_license)
    except Exception as e:
        logger.exception('Error registering new driver.')
        raise e
Beispiel #2
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Insert all the supported Ion types and Python values that are convertible to Ion into a ledger and verify that they
    are stored and can be retrieved properly, retaining their original properties.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            insert_and_verify_ion_types(driver)
    except Exception as e:
        logger.exception('Error updating and validating Ion types.')
        raise e
Beispiel #3
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Verify the integrity of a document revision in a QLDB ledger.
    """
    registration = SampleData.VEHICLE_REGISTRATION[0]
    vin = registration['VIN']
    try:
        with create_qldb_driver(ledger_name) as driver:
            verify_registration(driver, ledger_name, vin)
    except Exception as e:
        logger.exception('Unable to verify revision.')
        raise e
def main(ledger_name=Constants.LEDGER_NAME):
    """
    De-register a driver's license.
    """
    license_number = SampleData.DRIVERS_LICENSE[1]['LicenseNumber']

    try:
        with create_qldb_driver(ledger_name) as driver:
            deregister_drivers_license(driver, license_number)
    except Exception as e:
        logger.exception('Error deleting driver license.')
        raise e
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Query a table's history for a particular set of documents.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            vin = SampleData.VEHICLE_REGISTRATION[0]['VIN']
            previous_primary_owners(driver, vin)
            logger.info('Successfully queried history.')
    except Exception as e:
        logger.exception('Unable to query history to find previous owners.')
        raise e
Beispiel #6
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Find all vehicles registered under a person.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            # Find all vehicles registered under a person.
            gov_id = SampleData.PERSON[0]['GovId']
            find_vehicles_for_owner(driver, gov_id)
    except Exception as e:
        logger.exception('Error getting vehicles for owner.')
        raise e
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Insert documents into a table in a QLDB ledger.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            # An INSERT statement creates the initial revision of a document with a version number of zero.
            # QLDB also assigns a unique document identifier in GUID format as part of the metadata.
            update_and_insert_documents(driver)
            logger.info('Documents inserted successfully!')
    except Exception as e:
        logger.exception('Error inserting or updating documents.')
        raise e
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Finds and adds secondary owners for a vehicle.
    """
    vin = SampleData.VEHICLE[1]['VIN']
    gov_id = SampleData.PERSON[0]['GovId']
    try:
        with create_qldb_driver(ledger_name) as driver:
            register_secondary_owner(driver, vin, gov_id)
            logger.info('Secondary owners successfully updated.')
    except Exception as e:
        logger.exception('Error adding secondary owner.')
        raise e
Beispiel #9
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Find the person associated with a license number.
    Renew a driver's license.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            license_number = SampleData.DRIVERS_LICENSE[0]['LicenseNumber']
            verify_and_renew_license(driver, license_number, VALID_FROM_DATE,
                                     VALID_TO_DATE)
    except Exception as e:
        logger.exception('Error renewing drivers license.')
        raise e
Beispiel #10
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Create registrations, vehicles, owners, and licenses tables.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            create_table(driver, Constants.DRIVERS_LICENSE_TABLE_NAME)
            create_table(driver, Constants.PERSON_TABLE_NAME)
            create_table(driver, Constants.VEHICLE_TABLE_NAME)
            create_table(driver, Constants.VEHICLE_REGISTRATION_TABLE_NAME)
            logger.info('Tables created successfully.')
    except Exception as e:
        logger.exception('Errors creating tables.')
        raise e
def list_tables():
    """
    List all tables.

    :rtype: list
    :return: List of tables.
    """
    logger.info("Let's list all the tables...")
    with create_qldb_driver() as driver:
        logger.info("Success. List of tables:")
        tables = driver.list_tables()
        for table in tables:
            logger.info(table)
    return tables
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Scan for all the documents in a table.
    """
    try:
        with create_qldb_driver(ledger_name) as driver:
            # Scan all the tables and print their documents.
            tables = driver.list_tables()
            for table in tables:
                cursor = scan_table(driver, table)
                logger.info('Scan successful!')
                print_result(cursor)
    except Exception as e:
        logger.exception('Unable to scan tables.')
        raise e
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Find primary owner for a particular vehicle's VIN.
    Transfer to another primary owner for a particular vehicle's VIN.
    """
    vehicle_vin = SampleData.VEHICLE[0]['VIN']
    previous_owner = SampleData.PERSON[0]['GovId']
    new_owner = SampleData.PERSON[1]['GovId']

    try:
        with create_qldb_driver(ledger_name) as driver:
            validate_and_update_registration(driver, vehicle_vin, previous_owner, new_owner)
    except Exception as e:
        logger.exception('Error updating VehicleRegistration.')
        raise e
Beispiel #14
0
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Get a journal block from a QLDB ledger.

    After getting the block, we get the digest of the ledger and validate the
    proof returned in the getBlock response.
    """
    vin = SampleData.VEHICLE_REGISTRATION[1]['VIN']
    try:
        with create_qldb_driver(ledger_name) as driver:
            cursor = lookup_registration_for_vin(driver, vin)
            row = next(cursor)
            block_address = row.get('blockAddress')
            verify_block(ledger_name, block_address)
    except Exception as e:
        logger.exception('Unable to query vehicle registration by Vin.')
        raise e
Beispiel #15
0
def list_tables(ledger_name):
    """
    List all tables.

    :type ledger_name: str
    :param ledger_name: The name of the ledger.

    :rtype: list
    :return: List of tables.
    """
    logger.info("Let's list all the tables...")
    with create_qldb_driver(ledger_name) as driver:
        logger.info("Success. List of tables:")
        tables = driver.list_tables()
        for table in tables:
            logger.info(table)
    return tables
def main(ledger_name=Constants.LEDGER_NAME):
    """
    Create indexes on tables in a particular ledger.
    """
    logger.info('Creating indexes on all tables...')
    try:
        with create_qldb_driver(ledger_name) as driver:
            create_index(driver, Constants.PERSON_TABLE_NAME,
                         Constants.GOV_ID_INDEX_NAME)
            create_index(driver, Constants.VEHICLE_TABLE_NAME,
                         Constants.VEHICLE_VIN_INDEX_NAME)
            create_index(driver, Constants.VEHICLE_REGISTRATION_TABLE_NAME,
                         Constants.LICENSE_PLATE_NUMBER_INDEX_NAME)
            create_index(driver, Constants.VEHICLE_REGISTRATION_TABLE_NAME,
                         Constants.VEHICLE_VIN_INDEX_NAME)
            create_index(driver, Constants.DRIVERS_LICENSE_TABLE_NAME,
                         Constants.PERSON_ID_INDEX_NAME)
            create_index(driver, Constants.DRIVERS_LICENSE_TABLE_NAME,
                         Constants.LICENSE_NUMBER_INDEX_NAME)
            logger.info('Indexes created successfully.')
    except Exception as e:
        logger.exception('Unable to create indexes.')
        raise e
Beispiel #17
0
    :type transaction_executor: :py:class:`pyqldb.execution.executor.Executor`
    :param transaction_executor: An Executor object allowing for execution of statements within a transaction.

    :type table_name: str
    :param table_name: Name of the table to create.

    :rtype: int
    :return: The number of changes to the database.
    """
    logger.info("Creating the '{}' table...".format(table_name))
    statement = 'CREATE TABLE {}'.format(table_name)
    cursor = transaction_executor.execute_statement(statement)
    logger.info('{} table created successfully.'.format(table_name))
    return len(list(cursor))


if __name__ == '__main__':
    """
    Create registrations, vehicles, owners, and licenses tables in a single transaction.
    """
    try:
        with create_qldb_driver() as qldb_driver:
            qldb_driver.execute_lambda(lambda x: create_table(x, Constants.DRIVERS_LICENSE_TABLE_NAME) and
                                   create_table(x, Constants.PERSON_TABLE_NAME) and
                                   create_table(x, Constants.VEHICLE_TABLE_NAME) and
                                   create_table(x, Constants.VEHICLE_REGISTRATION_TABLE_NAME),
                                   lambda retry_attempt: logger.info('Retrying due to OCC conflict...'))
            logger.info('Tables created successfully.')
    except Exception:
        logger.exception('Errors creating tables.')