def create_ledger(ledger_name): """Create a ledger and wait for it to be active.""" try: DdlServices.do_create_ledger(ledger_name) wait_for_active(ledger_name) DdlServices.reset_ledgers() return success_response('Ledger is active and ready to use.', HTTPStatus.CREATED) except Exception as e: logger.exception('Unable to create the ledger!') return fail_response( 'Unable to create the ledger. error: {}. Please try again.'. format(e), HTTPStatus.UNPROCESSABLE_ENTITY)
def delete_ledger(ledger_name): """Delete a ledger.""" try: set_deletion_protection(ledger_name, False) DdlServices.do_delete_ledger(ledger_name) wait_for_deleted(ledger_name) DdlServices.reset_ledgers() return success_response('The ledger is successfully deleted.', HTTPStatus.ACCEPTED) except Exception as e: logger.exception('Unable to delete the ledger.') return fail_response( 'Unable to delete the ledger. Please try again.', HTTPStatus.UNPROCESSABLE_ENTITY)
def drop_table(ledger_name=None, table_name=None): """Create a Table""" try: with qldb.session(ledger_name) as session: session.execute_lambda( lambda x: DdlServices.do_drop_table(x, table_name), lambda retry_attempt: logger.info( 'Retrying due to OCC conflict...')) logger.info('Table dropped successfully.') return success_response('Table dropped successfully.', HTTPStatus.CREATED) except Exception: logger.exception('Error creating table.') return fail_response( 'Unable to create the table. Please try again.', HTTPStatus.UNPROCESSABLE_ENTITY)
def insert_documents(ledger_name, table_name, documents): """ Insert documents into a table in a QLDB ledger. """ try: with qldb.session(ledger_name) as session: # 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. session.execute_lambda( lambda executor: DmlServices.do_insert_documents(executor, table_name, documents), lambda retry_attempt: logger.info('Retrying due to OCC conflict...')) logger.info('Documents inserted successfully!') return success_response('Ledger is active and ready to use.', HTTPStatus.CREATED) except Exception as e: logger.exception('Error inserting or updating documents.') return fail_response('Error inserting or updating documents. error: {}. Please try again.'.format(e), HTTPStatus.UNPROCESSABLE_ENTITY)
def create_table_index(ledger_name=None, table_name=None, index_attribute=None): """Create index on tables in a particular ledger.""" logger.info('Creating index on all tables in a single transaction...') try: with qldb.session(ledger_name) as session: session.execute_lambda( lambda x: DdlServices.do_create_table_index( x, table_name, index_attribute), lambda retry_attempt: logger.info('Retrying due to OCC conflict...')) logger.info('Index created successfully.') return success_response('Index created successfully.', HTTPStatus.CREATED) except Exception: logger.exception('Unable to create index.') return fail_response( 'Unable to create the index. Please try again.', HTTPStatus.UNPROCESSABLE_ENTITY)