/* * @project The CERN Tape Archive (CTA) * @copyright Copyright © 2021-2022 CERN * @license This program is free software, distributed under the terms of the GNU General Public * Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". You can * redistribute it and/or modify it under the terms of the GPL Version 3, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public License for more details. * * In applying this licence, CERN does not waive the privileges and immunities * granted to it by virtue of its status as an Intergovernmental Organization or * submit itself to any jurisdiction. */ #include "rdbms/rdbms.hpp" #include "rdbms/wrapper/StmtWrapper.hpp" namespace cta::rdbms::wrapper { //------------------------------------------------------------------------------ // constructor //------------------------------------------------------------------------------ StmtWrapper::StmtWrapper(const std::string &sql): m_sql(sql), m_paramNameToIdx(sql) { } //------------------------------------------------------------------------------ // destructor //------------------------------------------------------------------------------ StmtWrapper::~StmtWrapper() = default; //------------------------------------------------------------------------------ // getSql //------------------------------------------------------------------------------ const std::string &StmtWrapper::getSql() const { return m_sql; } //------------------------------------------------------------------------------ // getParamIdx //------------------------------------------------------------------------------ uint32_t StmtWrapper::getParamIdx(const std::string ¶mName) const { return m_paramNameToIdx.getIdx(paramName); } //------------------------------------------------------------------------------ // getSqlForException //------------------------------------------------------------------------------ std::string StmtWrapper::getSqlForException(const std::string::size_type maxSqlLenInExceptions) const { return rdbms::getSqlForException(m_sql, maxSqlLenInExceptions); } //------------------------------------------------------------------------------ // bindBool //------------------------------------------------------------------------------ void StmtWrapper::bindBool(const std::string ¶mName, const std::optional ¶mValue) { if(paramValue) { bindString(paramName, paramValue.value() ? std::string("1") : std::string("0")); } else { bindString(paramName, std::nullopt); } } } // namespace cta::rdbms::wrapper