public ElasticsearchCommandOperation(ElasticsearchClientOperation client, string statement)
        {
            Client = client;
            var parser = new ElasticsearchCommandParser();

            Search = parser.Execute(statement);
        }
 protected internal ElasticsearchExecutionEngine(ElasticsearchClientOperation client, ElasticsearchCommandOperation command)
 {
     Client  = client;
     Command = command;
     Parsers = new List <IResultParser>()
     {
         new AggregationResultParser(), new QueryResultParser()
     };
 }
        protected ElasticsearchCommandOperation BuildCommandOperation(ElasticsearchClientOperation clientOperation, IQuery query, ITemplateEngine engine)
        {
            var statementText = query.Statement;

            if (query.TemplateTokens != null && query.TemplateTokens.Count() > 0 && engine != null)
            {
                statementText = ApplyVariablesToTemplate(engine, query.Statement, query.TemplateTokens);
            }

            return(new ElasticsearchCommandOperation(clientOperation, statementText));
        }
        protected DataSet OnExecuteDataSet(ElasticsearchClientOperation client, ElasticsearchSearch query)
        {
            var root   = OnExecute(client, query);
            var parser = Parsers.FirstOrDefault(x => x.CanHandle(root)) ?? throw new ArgumentException();

            var ds = new DataSet();
            var dt = parser.Execute(root);

            ds.Tables.Add(dt);
            dt.AcceptChanges();

            return(ds);
        }
        protected JObject OnExecute(ElasticsearchClientOperation client, ElasticsearchSearch query)
        {
            var response = client.Execute(query);

            if (!response.Success)
            {
                throw new Exception(response.Body);
            }

            var root = JObject.Parse(response.Body);

            return(root);
        }
 protected ICommand OnInstantiate(ElasticsearchClientOperation clientOperation, ElasticsearchCommandOperation commandOperation)
 => new ElasticsearchCommand(clientOperation, commandOperation);
 public ElasticsearchCommand(ElasticsearchClientOperation client, ElasticsearchCommandOperation query)
 {
     Client         = client;
     Implementation = query;
 }
 public object OnExecuteScalar(ElasticsearchClientOperation client, ElasticsearchSearch query)
 {
     throw new NotImplementedException();
 }
 public List <T> OnExecuteList <T>(ElasticsearchClientOperation client, ElasticsearchSearch query)
 {
     throw new NotImplementedException();
 }