#ifndef QUERY_QUERY_HPP #define QUERY_QUERY_HPP #include "matador/query/query_intermediates.hpp" #include "matador/sql/column_generator.hpp" namespace matador::sql { class connection; } namespace matador::query { sql::column alias(const std::string &column, const std::string &as); sql::column alias(sql::column &&col, const std::string &as); sql::column count(const std::string &column); sql::column count_all(); class query { public: [[nodiscard]] static query_create_intermediate create(); [[nodiscard]] static query_drop_intermediate drop(); [[nodiscard]] static query_select_intermediate select(std::initializer_list columns); [[nodiscard]] static query_select_intermediate select(const std::vector& columns); [[nodiscard]] static query_select_intermediate select(const std::vector &column_names); [[nodiscard]] static query_select_intermediate select(std::vector columns, std::initializer_list additional_columns); template [[nodiscard]] static query_select_intermediate select(const object::repository &schema) { return select(sql::column_generator::generate(schema)); } [[nodiscard]] static query_insert_intermediate insert(); [[nodiscard]] static query_update_intermediate update(const sql::table &table); [[nodiscard]] static query_delete_intermediate remove(); [[nodiscard]] static query_alter_intermediate alter(); }; } #endif //QUERY_QUERY_HPP