/* * @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. */ #pragma once #include #include #include namespace cta::rdbms::wrapper { /** * Abstract class specifying the interface to an implementation of the result * set of an sql query. */ class RsetWrapper { public: /** * Destructor. */ virtual ~RsetWrapper() = 0; /** * Returns the SQL statement. * * @return The SQL statement. */ virtual const std::string &getSql() const = 0; /** * Attempts to get the next row of the result set. * * @return True if a row has been retrieved else false if there are no more * rows in the result set. */ virtual bool next() = 0; /** * Returns true if the specified column contains a null value. * * @param colName The name of the column. * @return True if the specified column contains a null value. */ virtual bool columnIsNull(const std::string &colName) const = 0; /** * Returns the value of the specified column as a binary string (byte array). * * @param colName The name of the column. * @return The string value of the specified column. */ virtual std::string columnBlob(const std::string &colName) const = 0; /** * Returns the value of the specified column as a string. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The string value of the specified column. */ virtual std::optional columnOptionalString(const std::string &colName) const = 0; /** * Returns the value of the specified column as an integer. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The value of the specified column. */ virtual std::optional columnOptionalUint8(const std::string &colName) const = 0; /** * Returns the value of the specified column as an integer. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The value of the specified column. */ virtual std::optional columnOptionalUint16(const std::string &colName) const = 0; /** * Returns the value of the specified column as an integer. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The value of the specified column. */ virtual std::optional columnOptionalUint32(const std::string &colName) const = 0; /** * Returns the value of the specified column as an integer. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The value of the specified column. */ virtual std::optional columnOptionalUint64(const std::string &colName) const = 0; /** * Returns the value of the specified column as a double. * * This method will return a null column value as an optional with no value. * * @param colName The name of the column. * @return The value of the specified column. */ virtual std::optional columnOptionalDouble(const std::string &colName) const = 0; }; // class RsetWrapper } // namespace cta::rdbms::wrapper