asyncpg/src/SqlResult.h

83 lines
2.8 KiB
C++

#pragma once
#include "global.h"
#include <string>
using PGresult = struct pg_result;
namespace AsyncPg {
class SqlRecord;
/// Результат Sql запроса
class ASYNCPGLIB SqlResult
{
public:
/// Конструктор класса
/// @param pgresult Результат PostgreSql
explicit SqlResult(PGresult *pgresult = nullptr);
~SqlResult();
/// Конструктор копирования
SqlResult(const SqlResult&) = delete;
/// Оператор копирования
void operator=(const SqlResult&) = delete;
/// Конструктор перемещения
/// @param other Результата Sql запроса
SqlResult(SqlResult &&other) noexcept;
/// Оператор перемещения
/// @param other Результата Sql запроса
/// @return Результата Sql запроса
SqlResult& operator=(SqlResult &&other) noexcept;
/// Возвращает количество строк в результате Sql запроса
/// @return Количество строк
int rows() const;
/// Возвращает количество колонок в строке результат Sql запроса
/// @return Количество колонок в строке результат Sql запроса
int columns() const;
/// Возвращает наименование колонки по номеру колонки
/// @param column Номер колонки
/// @return Наименование колонки
std::string fieldName(int column) const;
/// Возвращает номер колонки по наименованию поля
/// @param fieldName Наименование колонки
/// @return Номер колонки
int column(std::string_view fieldName) const;
/// Возвращает результат PostgreSql
/// @return Результат PostgreSql
PGresult *pgresult() const;
/// Возвращает флаг наличия результата Sql запроса
/// @return Флаг наличия результата Sql запроса
bool operator!() const;
/// Возвращает указанную строку Sql запроса
/// @param row Номер строки
/// @return Строка Sql запроса
SqlRecord at(int row) const;
/// Возвращает первую строку Sql запроса
/// @return Первая строка Sql запроса
SqlRecord begin() const;
/// Возвращает последнюю строку Sql запроса
/// @return Последняя строка Sql запроса
SqlRecord end() const;
private:
PGresult *_result = nullptr;
int _rows = 0;
int _columns = 0;
};
}