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
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
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
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
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
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
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
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
: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.')