⚠️ This repository is in pre-alpha stage, so not yet feature-complete. And the API has not been frozen, it may be changed on the course of the development.
English | 简体中文
opengemini-client-cpp
is a C++ client for OpenGemini
- Design Doc
- About OpenGemini
- Prerequisites
- Integration
- Quick Start
- Build From Source
- Configuration
- Contribute
OpenGemini is a cloud-native distributed time series database, find more information here
- Building Environment
- Dependencies
- Boost 1.81 or later
- {fmt}
- JSON
- OpenSSL (optional, for using TLS protocol)
- GoogleTest (optional, for building unit tests)
For a whole example project, please check out
examples/integration
directory.
It is recommended to integrate with OpenGeminiCxx using CMake's FetchContent.
The library, along with any necessary dependencies(excluding OpenSSL), will be downloaded automatically, so you don't need to handle it yourself.
You can including the following lines in your CMakeLists.txt
:
include(FetchContent)
FetchContent_Declare(OpenGeminiCxx
GIT_REPOSITORY https://github.com/openGemini/opengemini-client-cpp
GIT_TAG main
)
FetchContent_MakeAvailable(OpenGeminiCxx)
This will export the target OpenGeminiCxx::Client
which you can link against to your own target like this:
add_executable(YourApp main.cpp)
target_link_libraries(YourApp PRIVATE OpenGeminiCxx::Client)
You can also use CMake's find_package()
function to integrate the library into your project.
This means you need to build and install OpenGeminiCxx on your system first.
Then you can add the following lines in your CMakeLists.txt
:
find_package(OpenGeminiCxx REQUIRED)
This will export the target OpenGeminiCxx::Client
which you can link against to your own target like this:
add_executable(YourApp main.cpp)
target_link_libraries(YourApp PRIVATE OpenGeminiCxx::Client)
Note: Although OpenGeminiCxx can be use as a header-only library, we still recommend use the compiled library for improved build times.
Download the OpenGeminiCxx, then add /path/to/opengemini-client-cpp/include
to your project's including directories.
You may also need to link against any necessary dependencies to your program manually, then you can include it directly in your source code with:
#include <opengemini/Client.hpp>
Below are a few examples show how to use some of the main features of the library. For more example code, please check out
examples/usage
directory.
#include <iostream>
#include <opengemini/Client.hpp>
#include <opengemini/ClientConfigBuilder.hpp>
int main(int argc, char** argv)
{
// Constructs an openGemini client object.
opengemini::Client client{ opengemini::ClientConfigBuilder()
// At least one server endpoint needed.
.AppendAddress({ "127.0.0.1", 8086 })
.Finalize() };
// Performs a query request and print the result, the operation will
// block until completes or an exception is thrown.
auto result = client.Query({
"ExampleDatabase",
"select * from ExampleMeasurement",
});
std::cout << result << std::endl;
return 0;
}
#include <iostream>
#include <opengemini/Client.hpp>
#include <opengemini/ClientConfigBuilder.hpp>
int main(int argc, char** argv)
{
// Constructs an openGemini client object.
opengemini::Client client{ opengemini::ClientConfigBuilder()
// At least one server endpoint needed.
.AppendAddress({ "127.0.0.1", 8086 })
.Finalize() };
// Writes single point to server, the operation will
// block until completes or an exception is thrown.
client.Write("ExampleDatabase",
{
"ExampleMeasurement",
{
{ "Weather", "sunny" },
{ "Humidity", 521 },
{ "Temperature", 38.1 },
},
std::chrono::system_clock::now(),
});
return 0;
}
Make sure all required build tools and dependencies are installed on your system, then you can download and build the OpenGeminiCxx library:
git clone https://github.com/openGemini/opengemini-client-cpp.git
cd opengemini-client-cpp && mkdir build && cd build
cmake ..
make -j
make install
If you want to enable TLS support, you can configure with OPENGEMINI_ENABLE_SSL_SUPPORT
option:
cmake -DOPENGEMINI_ENABLE_SSL_SUPPORT=ON ..
You can also control generation of unit tests with OPENGEMINI_BUILD_TESTING
option:
cmake -DOPENGEMINI_BUILD_TESTING=ON ..
For details of all the options see CMake Options.
Option | Description | Default Value |
---|---|---|
OPENGEMINI_ENABLE_SSL_SUPPORT | Enable OpenSSL support for using TLS (OpenSSL required) | OFF |
OPENGEMINI_BUILD_DOCUMENTATION | Build API documentation (Doxygen required) | OFF |
OPENGEMINI_BUILD_TESTING | Build unit tests (GoogleTest required) | OFF |
OPENGEMINI_BUILD_SHARED_LIBS | Build shared libraries instead of static ones. Only has effect if option OPENGEMINI_BUILD_HEADER_ONLY_LIBS is OFF |
OFF |
OPENGEMINI_BUILD_EXAMPLE | Build examples | OFF |
OPENGEMINI_BUILD_HEADER_ONLY_LIBS | Build as header-only library | OFF |
OPENGEMINI_GENERATE_INSTALL_TARGET | Generate the install target, should not be set to ON if OPENGEMINI_USE_FETCHCONTENT is also ON |
ON (if is root project) |
OPENGEMINI_USE_FETCHCONTENT | Automatically using FetchContent if dependencies not found | OFF (if is root project) |
Welcome to join us.