MantisBase v0.3.4
Loading...
Searching...
No Matches
mb::ContextStore Class Reference

#include <context_store.h>

Public Member Functions

 ContextStore ()=default
 
void dump ()
 Convenience method for dumping context data for debugging.
 
bool hasKey (const std::string &key) const
 
template<typename T >
void set (const std::string &key, T value)
 Store a key-value data in the context.
 
template<typename T >
std::optional< T * > get (const std::string &key)
 Get context value given the key.
 
template<typename T >
TgetOr (const std::string &key, T default_value)
 Get context value given the key.
 

Detailed Description

The ContextStore class provides a means to set/get a key-value data that can be shared uniquely between middlewares and the handler functions. This allows sending data down the chain from the first to the last handler.

For instance, the auth middleware will inject user id and subsequent middlewares can retrieve it as needed.

// Create the object
Context ctx;
// Add values
ctx.set<std::string>("key", "Value");
ctx.set<int>("id", 967567);
ctx.set<bool>("verified", true);
// Retrieve values
// From scripting using JS
req.set("key", 5") // INT/DOUBLE/FLOATS ...
req.set("key2", { a: 5, b: 7}) // Objects/JSON
req.set("valid", true) // BOOLs
req.getOr("nothing", "Default Value")
void set(const std::string &key, T value)
Store a key-value data in the context.
Definition context_store.h:81

The value returned from the get() is a std::optional, meaning a std::nullopt if the key was not found.

std::optional key = ctx.get<std::string>("key");
if(key.has_value()) { .... }

Additionally, we have a

See also
get_or() method that takes in a key and a default value if the key is missing. This unlike
get() method, returns a T& instead of T* depending on the usage needs.

Constructor & Destructor Documentation

◆ ContextStore()

mb::ContextStore::ContextStore ( )
default

Member Function Documentation

◆ dump()

void mb::ContextStore::dump ( )

Convenience method for dumping context data for debugging.

◆ get()

template<typename T >
std::optional< T * > mb::ContextStore::get ( const std::string &  key)
inline

Get context value given the key.

Template Parameters
TValue data type
Parameters
keyValue key
Returns
Value wrapped in a std::optional

◆ getOr()

template<typename T >
T & mb::ContextStore::getOr ( const std::string &  key,
T  default_value 
)
inline

Get context value given the key.

Template Parameters
TValue data type
Parameters
keyValue key
default_valueDefault value if key is missing
Returns
Value or default value

◆ hasKey()

bool mb::ContextStore::hasKey ( const std::string &  key) const
Parameters
keyKey to check in context store
Returns
true if key exists, else, false

◆ set()

template<typename T >
void mb::ContextStore::set ( const std::string &  key,
value 
)
inline

Store a key-value data in the context.

Template Parameters
TValue data type
Parameters
keyValue key
valueValue to be stored

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