Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::orm::query_builder< EntityType, typename > Class Template Reference

Template query builder for type-safe ORM queries. More...

#include <entity.h>

Collaboration diagram for database::orm::query_builder< EntityType, typename >:
Collaboration graph

Public Member Functions

 query_builder (std::shared_ptr< core::database_backend > db)
 
query_builderwhere (const std::string &condition)
 
query_builderorder_by (const std::string &field, bool ascending=true)
 
query_builderlimit (size_t count)
 
query_builderoffset (size_t count)
 
template<typename OtherEntity >
std::enable_if_t< is_entity_v< OtherEntity >, query_builder & > join (const std::string &condition)
 
template<typename OtherEntity >
std::enable_if_t< is_entity_v< OtherEntity >, query_builder & > left_join (const std::string &condition)
 
std::vector< EntityType > execute ()
 
std::optional< EntityType > first ()
 
size_t count ()
 
double sum (const std::string &field)
 
double avg (const std::string &field)
 
core::database_value min (const std::string &field)
 
core::database_value max (const std::string &field)
 

Private Member Functions

std::string build_query () const
 
EntityType map_result_to_entity (const core::database_result &result, size_t row) const
 

Private Attributes

std::shared_ptr< core::database_backenddb_
 
std::string where_clause_
 
std::string order_clause_
 
std::string join_clause_
 
size_t limit_count_ = 0
 
size_t offset_count_ = 0
 

Detailed Description

template<typename EntityType, typename>
class database::orm::query_builder< EntityType, typename >

Template query builder for type-safe ORM queries.

Definition at line 192 of file entity.h.

Constructor & Destructor Documentation

◆ query_builder()

template<typename EntityType , typename >
database::orm::query_builder< EntityType, typename >::query_builder ( std::shared_ptr< core::database_backend > db)

Member Function Documentation

◆ avg()

template<typename EntityType , typename >
double database::orm::query_builder< EntityType, typename >::avg ( const std::string & field)

◆ build_query()

template<typename EntityType , typename >
std::string database::orm::query_builder< EntityType, typename >::build_query ( ) const
private

◆ count()

template<typename EntityType , typename >
size_t database::orm::query_builder< EntityType, typename >::count ( )

◆ execute()

template<typename EntityType , typename >
std::vector< EntityType > database::orm::query_builder< EntityType, typename >::execute ( )

◆ first()

template<typename EntityType , typename >
std::optional< EntityType > database::orm::query_builder< EntityType, typename >::first ( )

◆ join()

template<typename EntityType , typename >
template<typename OtherEntity >
std::enable_if_t< is_entity_v< OtherEntity >, query_builder & > database::orm::query_builder< EntityType, typename >::join ( const std::string & condition)

◆ left_join()

template<typename EntityType , typename >
template<typename OtherEntity >
std::enable_if_t< is_entity_v< OtherEntity >, query_builder & > database::orm::query_builder< EntityType, typename >::left_join ( const std::string & condition)

◆ limit()

template<typename EntityType , typename >
query_builder & database::orm::query_builder< EntityType, typename >::limit ( size_t count)

◆ map_result_to_entity()

template<typename EntityType , typename >
EntityType database::orm::query_builder< EntityType, typename >::map_result_to_entity ( const core::database_result & result,
size_t row ) const
private

◆ max()

template<typename EntityType , typename >
core::database_value database::orm::query_builder< EntityType, typename >::max ( const std::string & field)

◆ min()

template<typename EntityType , typename >
core::database_value database::orm::query_builder< EntityType, typename >::min ( const std::string & field)

◆ offset()

template<typename EntityType , typename >
query_builder & database::orm::query_builder< EntityType, typename >::offset ( size_t count)

◆ order_by()

template<typename EntityType , typename >
query_builder & database::orm::query_builder< EntityType, typename >::order_by ( const std::string & field,
bool ascending = true )

◆ sum()

template<typename EntityType , typename >
double database::orm::query_builder< EntityType, typename >::sum ( const std::string & field)

◆ where()

template<typename EntityType , typename >
query_builder & database::orm::query_builder< EntityType, typename >::where ( const std::string & condition)

Member Data Documentation

◆ db_

template<typename EntityType , typename >
std::shared_ptr<core::database_backend> database::orm::query_builder< EntityType, typename >::db_
private

◆ join_clause_

template<typename EntityType , typename >
std::string database::orm::query_builder< EntityType, typename >::join_clause_
private

◆ limit_count_

template<typename EntityType , typename >
size_t database::orm::query_builder< EntityType, typename >::limit_count_ = 0
private

◆ offset_count_

template<typename EntityType , typename >
size_t database::orm::query_builder< EntityType, typename >::offset_count_ = 0
private

◆ order_clause_

template<typename EntityType , typename >
std::string database::orm::query_builder< EntityType, typename >::order_clause_
private

◆ where_clause_

template<typename EntityType , typename >
std::string database::orm::query_builder< EntityType, typename >::where_clause_
private

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