Repository URL to install this package:
|
Version:
0.3.1-2 ▾
|
#pragma once
// C library includes
#include <ctime>
// Internal library includes
#include <cpporm/backend/soci/export.h>
#include <cpporm/util/macros.h>
CPPORM_BEGIN_SUB_SUB_NAMESPACE(backend, soci)
/*!
* \brief Convert to string
* \tparam T The type of the input value
* \param[in] value The value
* \return The converted value
*/
template <typename T>
std::string Convert(const T &value);
/*!
* \brief Process parameter names in an SQL query
*
* This function parses the input SQL searching for placeholders (?) and replaces them by
* parameters, giving each parameter a name corresponding to the order of occurrence in the query.
*
* For example:
* > UPDATE table_name SET column1 = ?, column2 = ? WHERE column1 = ?;
*
* Turns into:
* > UPDATE table_name SET column1 = :0, column2 = :1 WHERE column1 = :2;
*
* \param[in] sql The SQL text
* \return The processed SQL string
* \see MakeParameterName
*/
CPPORM_SOCI_EXPORT std::string ProcessParameterNames(const std::string &sql);
/*!
* \brief Make parameter name from parameter index
* \param[in] param The parameter index
* \return The parameter name
*/
CPPORM_SOCI_EXPORT std::string MakeParameterName(short param);
/*!
* \cond PRIVATE
* \brief Explicit specialization declarations
*/
#define CPPORM_EXPLICITLY_DECLARE_SPECIALIZATION(name) \
X(name, double) \
X(name, int) \
X(name, long long) \
X(name, unsigned long long) \
X(name, std::tm)
#define X(name, param) \
template <> \
std::string name(const param &value);
CPPORM_EXPLICITLY_DECLARE_SPECIALIZATION(Convert)
#undef X
#undef CPPORM_EXPLICITLY_DECLARE_SPECIALIZATION
/*! \endcond */
CPPORM_END_SUB_SUB_NAMESPACE