#pragma once #include #include #include namespace db { namespace statements { namespace builder { class StatementBuilder; class InsertStatementBuilder; class SelectStatementBuilder; class UpdateStatementBuilder; class DeleteStatementBuilder; class Statement { public: Statement() = default; friend class InsertStatementBuilder; friend class SelectStatementBuilder; friend class UpdateStatementBuilder; friend class DeleteStatementBuilder; friend std::ostream &operator<<(std::ostream &os, const Statement &s); static InsertStatementBuilder insert(); static SelectStatementBuilder select(); static UpdateStatementBuilder update(); static DeleteStatementBuilder remove(); std::string str() const; private: std::string body; }; } } }