Trippin Cyril
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | List of all members
trippingcyril::database::postgres::PostGres Class Reference

A non blocking postgresql implementation of the Database interface. More...

#include <Postgres.h>

Inheritance diagram for trippingcyril::database::postgres::PostGres:
[legend]
Collaboration diagram for trippingcyril::database::postgres::PostGres:
[legend]

Public Member Functions

 PostGres (const String &connstring, const Module *pModule=NULL)
 
virtual ~PostGres ()
 
void SelectLamdba (const String &query, const DBLamdbaCallback &callback, const DBLamdbaErrorCallback &errorcallback=nullptr) override
 Do a select operation but use a lamdba as a callback instead of a DBCallback class. More...
 
void InsertLamdba (const String &query, const DBLamdbaCallback &callback, const DBLamdbaErrorCallback &errorcallback=nullptr) override
 Do a select operation but use a lamdba as a callback instead of a DBCallback class. More...
 
const DBResultSelect (const String &query, DBCallback *callback=NULL) override
 Do or queue (depends on implementation) a select operation. More...
 
const DBResultInsert (const String &query, DBCallback *callback=NULL) override
 Do or queue (depends on implementation) an insert operation. More...
 
bool isIdle () const override
 
bool Listen (const String &key, PGNotifyListener *listener)
 
void Unlisten (const String &key)
 
virtual void SetStayConnected (bool b) override
 
- Public Member Functions inherited from trippingcyril::database::Database
 Database (const Module *pModule=NULL)
 
virtual ~Database ()
 
void enableAutoCommit ()
 Enables auto commiting. More...
 
void disableAutoCommit ()
 Enables auto commiting. More...
 
- Public Member Functions inherited from trippingcyril::trippingcyril::Event
 Event (const Module *module)
 
virtual ~Event ()
 
const ModuleGetModule () const
 

Additional Inherited Members

- Protected Member Functions inherited from trippingcyril::trippingcyril::Event
event_base * GetEventBase () const
 
evdns_base * GetDNSBase () const
 
- Protected Attributes inherited from trippingcyril::database::Database
bool _autocommit: 1
 
bool _stay_connected: 1
 
- Protected Attributes inherited from trippingcyril::trippingcyril::Event
const Modulemodule
 

Detailed Description

A non blocking postgresql implementation of the Database interface.

Note
This implementation is somewhat threadsafe, all queries will be executed on the thread that the event base is running on, however the query queueing methods are not threadsafe!

Constructor & Destructor Documentation

trippingcyril::database::postgres::PostGres::PostGres ( const String connstring,
const Module pModule = NULL 
)

General constructor

Parameters
connstringThe connection string for this database
pModuleThe module to register this database on
virtual trippingcyril::database::postgres::PostGres::~PostGres ( )
virtual

General deconstructor

Member Function Documentation

const DBResult* trippingcyril::database::postgres::PostGres::Insert ( const String query,
DBCallback callback = NULL 
)
overridevirtual

Do or queue (depends on implementation) an insert operation.

Parameters
queryThe query to execute
callbackThe callback you would like bundled with this query
Returns
Either the result of a query or just NULL

Implements trippingcyril::database::Database.

void trippingcyril::database::postgres::PostGres::InsertLamdba ( const String query,
const DBLamdbaCallback callback,
const DBLamdbaErrorCallback errorcallback = nullptr 
)
overridevirtual

Do a select operation but use a lamdba as a callback instead of a DBCallback class.

Parameters
queryThe query to execute
callbackThe sucess callback
errorcallbackThe errorcallback
Note
Requires C++11
In case you're implementing the database class you are not required to do anything special, however if you want you may do so anyway.

Reimplemented from trippingcyril::database::Database.

bool trippingcyril::database::postgres::PostGres::isIdle ( ) const
inlineoverridevirtual
Returns
True if the database is idle

Implements trippingcyril::database::Database.

bool trippingcyril::database::postgres::PostGres::Listen ( const String key,
PGNotifyListener listener 
)

Demands SetStayConnected(true), will apply automatically

Returns
False if you're already listening for this or if it contained some invalid characters
See Also
String::OnlyContains
const DBResult* trippingcyril::database::postgres::PostGres::Select ( const String query,
DBCallback callback = NULL 
)
overridevirtual

Do or queue (depends on implementation) a select operation.

Parameters
queryThe query to execute
callbackThe callback you would like bundled with this query
Returns
Either the result of a query or just NULL

Implements trippingcyril::database::Database.

void trippingcyril::database::postgres::PostGres::SelectLamdba ( const String query,
const DBLamdbaCallback callback,
const DBLamdbaErrorCallback errorcallback = nullptr 
)
overridevirtual

Do a select operation but use a lamdba as a callback instead of a DBCallback class.

Parameters
queryThe query to execute
callbackThe sucess callback
errorcallbackThe errorcallback
Note
Requires C++11
In case you're implementing the database class you are not required to do anything special, however if you want you may do so anyway.

Reimplemented from trippingcyril::database::Database.

virtual void trippingcyril::database::postgres::PostGres::SetStayConnected ( bool  b)
inlineoverridevirtual

Set the stay connected mode on or off

Reimplemented from trippingcyril::database::Database.

void trippingcyril::database::postgres::PostGres::Unlisten ( const String key)

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