diff -r 454cfb01cf95 -r aadef824dc93 ArgumentsCommand.h --- a/ArgumentsCommand.h Mon Dec 03 16:11:40 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/** - * Relational pipes - * Copyright © 2018 František Kučera (Frantovo.cz, GlobalCode.info) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, 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. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include -#include -#include -#include -#include - -#include -#include - -#include "Command.h" - -namespace relpipe { -namespace in { -namespace cli { - -class ArgumentsCommand : public Command { -public: - - void process(std::istream& input, std::ostream& output, const relpipe::writer::string_t& command, const std::vector& arguments) override { - using namespace relpipe::writer; - - size_t i = 0; - string_t relationName = arguments[i++]; - integer_t attributeCount = std::stoul(arguments[i++]); // TODO: use integer data type's method? - boolean_t writeHeader = true; // TODO: add option for header omitting - - // TODO: check argument count - - std::shared_ptr writer(Factory::create(output)); - - std::vector attributes(attributeCount); - - for (size_t j = 0; j < attributeCount; j++) { - string_t attributeName = arguments[i++]; - TypeId attributeType = writer->toTypeId(arguments[i++]); - attributes[j] = {attributeName, attributeType}; - } - - writer->startRelation(relationName, attributes, writeHeader); - - for (; i < arguments.size(); i++) { - writer->writeAttribute(arguments[i]); - } - } -}; - -} -} -}