5#ifndef TABLEAU_HYPER_CONNECTION_HPP
6#define TABLEAU_HYPER_CONNECTION_HPP
15#include <hyperapi/impl/infra.hpp>
21#include <hyperapi/hyperapi.h>
28 None = HYPER_DO_NOT_CREATE,
43 using CatalogPimpl = std::unique_ptr<Catalog>;
55 Connection(
const Endpoint& endpoint,
const std::unordered_map<std::string, std::string>& parameters = {});
70 const std::string& databasePath,
72 const std::unordered_map<std::string, std::string>& parameters = {});
169 template <typename T>
208 bool isOpen() const noexcept {
return handle_ !=
nullptr; }
220 hyper_connection_t* handle_ =
nullptr;
222 CatalogPimpl catalog_;
224 std::unique_ptr<internal::NoticeReceiver> noticeReceiver_{
new internal::NoticeReceiver()};
226 std::unique_ptr<internal::AsyncResultCallback> asyncResultCallback_{
new internal::AsyncResultCallback()};
228 friend class Catalog;
229 friend class Inserter;
230 friend void internal::setNoticeReceiver(
Connection& connection, internal::NoticeReceiver noticeReceiver)
noexcept;
231 friend void internal::setAsyncResultCallback(
Connection& connection, internal::AsyncResultCallback asyncResultCallback)
noexcept;
232 friend const internal::AsyncResultCallback& internal::getAsyncResultCallback(
Connection& connection)
noexcept;
233 friend hyper_connection_t* internal::getHandle(
Connection&)
noexcept;
237#include <hyperapi/impl/Catalog.impl.hpp>
238#include <hyperapi/impl/Connection.impl.hpp>
The catalog class gives access to the metadata of the attached databases of a connection.
Defines a Hyper connection.
void cancel() noexcept
Issues an asynchronous cancel request for the running query on the given connection.
Catalog & getCatalog() noexcept
Returns the catalog of this connection.
bool isOpen() const noexcept
Checks whether the connection is open.
Connection(const Endpoint &endpoint, const std::unordered_map< std::string, std::string > ¶meters={})
Connects to a Hyper endpoint without attaching to a database.
HYPER_API_NODISCARD Result executeQuery(const std::string &sql)
Executes a SQL query and returns the result.
bool isReady()
Checks whether the connection is ready, i.e., if the connection can be used.
virtual ~Connection() noexcept
Destructor.
Connection() noexcept
Constructs a Connection object that does not represent a connection.
int64_t executeCommand(const std::string &sql)
Executes a SQL command and returns the affected row count, if any.
virtual void close() noexcept
Closes the connection.
Connection(const Endpoint &endpoint, const std::string &databasePath, CreateMode createMode=CreateMode::None, const std::unordered_map< std::string, std::string > ¶meters={})
Connects to a Hyper endpoint and attaches to exactly one database.
T executeScalarQuery(const std::string &sql)
Executes a SQL query that returns exactly one row with one column.
Describes a network endpoint at which a Hyper server is accessible.
Base class for a result of a query.
The primary namespace of the Hyper API for C++.
CreateMode
Database creation behavior during connection establishing.
@ CreateIfNotExists
Create the database if it doesn't exist.
@ Create
Create the database. Method will fail if the database already exists.
@ None
Do not create the database. Method will fail if database doesn't exist.
@ CreateAndReplace
Create the database. If it already exists, drop the old one first.