#pragma once #include #include #include namespace db { namespace migrations { namespace builder { class TableBuilder; class CreateTableBuilder; class AlterTableBuilder; class DropTableBuilder; class Table { public: Table() = default; friend class CreateTableBuilder; friend class AlterTableBuilder; friend class DropTableBuilder; friend std::ostream &operator<<(std::ostream &os, const Table &t); static CreateTableBuilder create(const std::string table_name); static AlterTableBuilder alter(const std::string table_name); static DropTableBuilder drop(const std::string table_name); std::string str() const; private: std::string header; std::string body; }; } } }