#include <cstdlib>
#include <memory>
#include <tuple>
#include <RelationalWriter.h>
#include <Factory.h>
#include <TypeId.h>
int main(int argc, char** argv) {
using namespace relpipe::writer;
std::shared_ptr<RelationalWriter> writer(Factory::create(std::cout));
// All strings
writer->startRelation(L"my_first_table",{
{L"a1", TypeId::STRING},
{L"a2", TypeId::STRING},
{L"a3", TypeId::STRING}
}, true);
writer->writeRecord({L"1.1", L"1.2", L"1.3"});
writer->writeRecord({L"2.1", L"2.2", L"2.3"});
writer->writeRecord({L"3.1", L"3.2", L"3.3"});
// Various data types passed as strings
writer->startRelation(L"my_second_table",{
{L"s", TypeId::STRING},
{L"i", TypeId::INTEGER},
{L"b", TypeId::BOOLEAN}
}, true);
writer->writeRecord({L"a", L"1", L"true"});
writer->writeRecord({L"b", L"2", L"false"});
writer->writeRecord({L"c", L"3", L"true"});
// Various data types passed as raw pointers + typeids
writer->startRelation(L"my_raw_table",{
{L"s", TypeId::STRING},
{L"i", TypeId::INTEGER},
{L"b", TypeId::BOOLEAN}
}, true);
for (int i = 0; i < 3; i++) {
string_t sValue = L"s";
integer_t iValue = i;
boolean_t bValue = i % 2 == 0;
writer->writeAttribute(&sValue, typeid(sValue));
writer->writeAttribute(&iValue, typeid(iValue));
writer->writeAttribute(&bValue, typeid(bValue));
}
return 0;
}