#pragma once #include "enginedata.h" #include #include #include using namespace std; struct WhereClause{ int col; vector values; WhereClause(void); WhereClause(const int _c,const vector &_v); }; struct UpdateClause{ int col; RowItem value; UpdateClause(void); UpdateClause(const int _c,const RowItem &_v); }; struct QueryResult{ int res; vector rows; string msg; //empty message indicates success QueryResult(void); QueryResult(int); QueryResult(int,const vector&); QueryResult(int,const vector&,const string&); QueryResult(int,const string&); }; struct Query{ string tablename; virtual QueryResult execute(map&); virtual ~Query(void); }; struct CreateQuery : public Query{ int nc; ColHeader *header; CreateQuery(void); void setHeader(const ColHeader *hd); QueryResult execute(map &tables); }; struct FindQuery : public Query{ unsigned int limit; //-1=unlimited vector where; FindQuery(void); pair::const_iterator>,string> executeIterators(map &tables); pair::const_iterator>,string> executeIterators(const Table &table); QueryResult execute(map &tables); }; struct InsertQuery : public Query{ Row row; InsertQuery(const Row &_r); InsertQuery(Row &&_r); QueryResult execute(map &tables); }; struct UpdateQuery : public Query{ vector where; vector updates; UpdateQuery(void); QueryResult execute(map &tables); }; struct DeleteQuery : public Query{ vector where; DeleteQuery(void); QueryResult execute(map &tables); }; struct DropQuery : public Query{ DropQuery(void); QueryResult execute(map &tables); };