Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::async::async_database Class Reference

Asynchronous database interface wrapper. More...

#include <async_operations.h>

Collaboration diagram for database::async::async_database:
Collaboration graph

Public Member Functions

 async_database (std::shared_ptr< core::database_backend > db, std::shared_ptr< async_executor > executor)
 
async_result< bool > execute_async (const std::string &query)
 
async_result< core::database_resultselect_async (const std::string &query)
 
async_result< std::vector< bool > > execute_batch_async (const std::vector< std::string > &queries)
 
async_result< std::vector< core::database_result > > select_batch_async (const std::vector< std::string > &queries)
 
async_result< bool > begin_transaction_async ()
 
async_result< bool > commit_transaction_async ()
 
async_result< bool > rollback_transaction_async ()
 
async_result< bool > connect_async (const std::string &connection_string)
 
async_result< bool > disconnect_async ()
 

Private Attributes

std::shared_ptr< core::database_backenddb_
 
std::shared_ptr< async_executorexecutor_
 

Detailed Description

Asynchronous database interface wrapper.

Definition at line 275 of file async_operations.h.

Constructor & Destructor Documentation

◆ async_database()

database::async::async_database::async_database ( std::shared_ptr< core::database_backend > db,
std::shared_ptr< async_executor > executor )
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 735 of file async_operations.h.

738 : db_(std::move(db))
739 , executor_(std::move(executor))
740 {
741 }
std::shared_ptr< core::database_backend > db_
std::shared_ptr< async_executor > executor_

Member Function Documentation

◆ begin_transaction_async()

async_result< bool > database::async::async_database::begin_transaction_async ( )
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 807 of file async_operations.h.

808 {
809 auto db = db_;
810 auto future = executor_->submit([db]() -> bool {
811 auto result = db->begin_transaction();
812 if (result.is_err()) {
813 throw std::runtime_error(result.error().message);
814 }
815 return true;
816 });
817 return async_result<bool>(std::move(future));
818 }

References db_, and executor_.

◆ commit_transaction_async()

async_result< bool > database::async::async_database::commit_transaction_async ( )
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 820 of file async_operations.h.

821 {
822 auto db = db_;
823 auto future = executor_->submit([db]() -> bool {
824 auto result = db->commit_transaction();
825 if (result.is_err()) {
826 throw std::runtime_error(result.error().message);
827 }
828 return true;
829 });
830 return async_result<bool>(std::move(future));
831 }

References db_, and executor_.

◆ connect_async()

async_result< bool > database::async::async_database::connect_async ( const std::string & connection_string)
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 846 of file async_operations.h.

847 {
848 auto db = db_;
849 auto future = executor_->submit([db, connection_string]() -> bool {
850 auto config = core::connection_config::from_string(connection_string);
851 auto result = db->initialize(config);
852 if (result.is_err()) {
853 throw std::runtime_error(result.error().message);
854 }
855 return true;
856 });
857 return async_result<bool>(std::move(future));
858 }
static connection_config from_string(const std::string &connect_string)
Construct connection_config from legacy connection string.

References db_, executor_, and database::core::connection_config::from_string().

Here is the call graph for this function:

◆ disconnect_async()

async_result< bool > database::async::async_database::disconnect_async ( )
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 860 of file async_operations.h.

861 {
862 auto db = db_;
863 auto future = executor_->submit([db]() -> bool {
864 auto result = db->shutdown();
865 if (result.is_err()) {
866 throw std::runtime_error(result.error().message);
867 }
868 return true;
869 });
870 return async_result<bool>(std::move(future));
871 }

References db_, and executor_.

◆ execute_async()

async_result< bool > database::async::async_database::execute_async ( const std::string & query)
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 743 of file async_operations.h.

744 {
745 auto db = db_;
746 auto future = executor_->submit([db, query]() -> bool {
747 auto result = db->execute_query(query);
748 if (result.is_err()) {
749 throw std::runtime_error(result.error().message);
750 }
751 return true;
752 });
753 return async_result<bool>(std::move(future));
754 }

References db_, and executor_.

◆ execute_batch_async()

async_result< std::vector< bool > > database::async::async_database::execute_batch_async ( const std::vector< std::string > & queries)
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 769 of file async_operations.h.

771 {
772 auto db = db_;
773 auto queries_copy = queries;
774 auto future = executor_->submit([db, queries_copy]() -> std::vector<bool> {
775 std::vector<bool> results;
776 results.reserve(queries_copy.size());
777 for (const auto& q : queries_copy) {
778 auto result = db->execute_query(q);
779 results.push_back(result.is_ok());
780 }
781 return results;
782 });
783 return async_result<std::vector<bool>>(std::move(future));
784 }

References db_, and executor_.

◆ rollback_transaction_async()

async_result< bool > database::async::async_database::rollback_transaction_async ( )
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 833 of file async_operations.h.

834 {
835 auto db = db_;
836 auto future = executor_->submit([db]() -> bool {
837 auto result = db->rollback_transaction();
838 if (result.is_err()) {
839 throw std::runtime_error(result.error().message);
840 }
841 return true;
842 });
843 return async_result<bool>(std::move(future));
844 }

References db_, and executor_.

◆ select_async()

async_result< core::database_result > database::async::async_database::select_async ( const std::string & query)
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 756 of file async_operations.h.

757 {
758 auto db = db_;
759 auto future = executor_->submit([db, query]() -> core::database_result {
760 auto result = db->select_query(query);
761 if (result.is_err()) {
762 throw std::runtime_error(result.error().message);
763 }
764 return result.value();
765 });
766 return async_result<core::database_result>(std::move(future));
767 }
std::vector< database_row > database_result

References db_, and executor_.

◆ select_batch_async()

async_result< std::vector< core::database_result > > database::async::async_database::select_batch_async ( const std::vector< std::string > & queries)
inline
Examples
/home/runner/work/database_system/database_system/database/async/async_operations.h.

Definition at line 786 of file async_operations.h.

788 {
789 auto db = db_;
790 auto queries_copy = queries;
791 auto future = executor_->submit([db, queries_copy]() -> std::vector<core::database_result> {
792 std::vector<core::database_result> results;
793 results.reserve(queries_copy.size());
794 for (const auto& q : queries_copy) {
795 auto result = db->select_query(q);
796 if (result.is_ok()) {
797 results.push_back(result.value());
798 } else {
799 results.push_back(core::database_result{});
800 }
801 }
802 return results;
803 });
804 return async_result<std::vector<core::database_result>>(std::move(future));
805 }

References db_, and executor_.

Member Data Documentation

◆ db_

◆ executor_


The documentation for this class was generated from the following file: