liarsdice::database::DatabaseConnection class

RAII wrapper for SQLite database connection.

Manages a single SQLite database connection with automatic resource cleanup and thread-safe operations.

Public types

enum class State { Disconnected, Connected, Error }
Connection state.
using ConnectionPtr = std::unique_ptr<sqlite3, std::function<void(sqlite3*)>>

Constructors, destructors, conversion operators

DatabaseConnection()
Constructor - creates a closed connection.
~DatabaseConnection()
Destructor - ensures connection is closed.

Public functions

auto open(const std::string& path, int flags = SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, mode_t file_mode = 0600) -> boost::system::error_code
Open a database connection with secure file permissions.
auto check_health() const -> bool
Check connection health.
void close()
Close the database connection.
auto is_open() const -> bool
Check if connection is open.
auto get_state() const -> State
Get the current connection state.
auto get() const -> sqlite3*
Get the raw SQLite connection handle.
auto execute(const std::string& sql) -> boost::system::error_code
Execute a simple SQL statement.
auto begin_transaction() -> boost::system::error_code
Begin a transaction.
auto commit() -> boost::system::error_code
Commit a transaction.
auto rollback() -> boost::system::error_code
Rollback a transaction.
auto get_last_error() const -> std::string
Get the last error message.
auto get_last_insert_rowid() const -> sqlite3_int64
Get the last insert row ID.
auto get_changes() const -> int
Get the number of rows changed by last statement.
auto get_idle_time() const -> std::chrono::steady_clock::duration
Get time since last activity.
auto get_connection_string() const -> std::string
Get the connection string.
void set_busy_timeout(int ms)
Set busy timeout.

Function documentation

boost::system::error_code liarsdice::database::DatabaseConnection::open(const std::string& path, int flags = SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, mode_t file_mode = 0600)

Open a database connection with secure file permissions.

Parameters
path Database file path or URI
flags SQLite open flags
file_mode Unix file permissions (default: 0600 - owner read/write only)
Returns Error code if failed

bool liarsdice::database::DatabaseConnection::check_health() const

Check connection health.

Returns true if connection is healthy

bool liarsdice::database::DatabaseConnection::is_open() const

Check if connection is open.

Returns true if connected

State liarsdice::database::DatabaseConnection::get_state() const

Get the current connection state.

Returns Connection state

sqlite3* liarsdice::database::DatabaseConnection::get() const

Get the raw SQLite connection handle.

Returns SQLite3 pointer (may be null)

boost::system::error_code liarsdice::database::DatabaseConnection::execute(const std::string& sql)

Execute a simple SQL statement.

Parameters
sql SQL statement to execute
Returns Error code if failed

boost::system::error_code liarsdice::database::DatabaseConnection::begin_transaction()

Begin a transaction.

Returns Error code if failed

boost::system::error_code liarsdice::database::DatabaseConnection::commit()

Commit a transaction.

Returns Error code if failed

boost::system::error_code liarsdice::database::DatabaseConnection::rollback()

Rollback a transaction.

Returns Error code if failed

std::string liarsdice::database::DatabaseConnection::get_last_error() const

Get the last error message.

Returns Error message string

sqlite3_int64 liarsdice::database::DatabaseConnection::get_last_insert_rowid() const

Get the last insert row ID.

Returns Row ID or 0 if no insert

int liarsdice::database::DatabaseConnection::get_changes() const

Get the number of rows changed by last statement.

Returns Number of changed rows

std::chrono::steady_clock::duration liarsdice::database::DatabaseConnection::get_idle_time() const

Get time since last activity.

Returns Duration since last use

std::string liarsdice::database::DatabaseConnection::get_connection_string() const

Get the connection string.

Returns Connection string used to open database

void liarsdice::database::DatabaseConnection::set_busy_timeout(int ms)

Set busy timeout.

Parameters
ms Timeout in milliseconds