You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
929 B

  1. #pragma once
  2. #include <iostream>
  3. #include <string>
  4. #include <sstream>
  5. namespace db {
  6. namespace statements {
  7. namespace builder {
  8. class StatementBuilder;
  9. class InsertStatementBuilder;
  10. class SelectStatementBuilder;
  11. class UpdateStatementBuilder;
  12. class DeleteStatementBuilder;
  13. class Statement {
  14. public:
  15. Statement() = default;
  16. friend class InsertStatementBuilder;
  17. friend class SelectStatementBuilder;
  18. friend class UpdateStatementBuilder;
  19. friend class DeleteStatementBuilder;
  20. friend std::ostream &operator<<(std::ostream &os, const Statement &s);
  21. static InsertStatementBuilder insert();
  22. static SelectStatementBuilder select();
  23. static UpdateStatementBuilder update();
  24. static DeleteStatementBuilder remove();
  25. std::string str() const;
  26. private:
  27. std::string body;
  28. };
  29. }
  30. }
  31. }