liarsdice::database::SQLiteExtensionManager class

SQLite extension manager using Boost.DLL.

Manages dynamic loading of SQLite extensions with thread safety and proper error handling.

Public types

struct Extension
using ExtensionInitFunc = int(*)(sqlite3*, char**, const sqlite3_api_routines*)

Constructors, destructors, conversion operators

SQLiteExtensionManager() defaulted
Constructor.

Public functions

void add_extension_path(const fs::path& path)
Add extension path for searching.
auto register_extension(const std::string& name, bool required = false) -> bool
Register an extension for loading.
void load_extensions(sqlite3* db)
Load all registered extensions into SQLite connection.
auto get_loaded_extensions() const -> std::vector<std::string>
Get list of loaded extensions.
auto is_extension_loaded(const std::string& name) const -> bool
Check if a specific extension is loaded.

Function documentation

void liarsdice::database::SQLiteExtensionManager::add_extension_path(const fs::path& path)

Add extension path for searching.

Parameters
path Directory containing SQLite extensions

bool liarsdice::database::SQLiteExtensionManager::register_extension(const std::string& name, bool required = false)

Register an extension for loading.

Parameters
name Extension name (without file extension)
required If true, failure to load will throw exception
Returns true if extension was found

void liarsdice::database::SQLiteExtensionManager::load_extensions(sqlite3* db)

Load all registered extensions into SQLite connection.

Parameters
db SQLite database connection
Exceptions
std::runtime_error if loading fails

std::vector<std::string> liarsdice::database::SQLiteExtensionManager::get_loaded_extensions() const

Get list of loaded extensions.

Returns Vector of loaded extension names

bool liarsdice::database::SQLiteExtensionManager::is_extension_loaded(const std::string& name) const

Check if a specific extension is loaded.

Parameters
name Extension name
Returns true if extension is loaded