/** * @file mix_cc/sql/select.h * @brief 查询语句 * @author Cat (null.null.null@qq.com) * @version 0.1 * @date 2021-09-17 * * Copyright: Baosight Co. Ltd. * DO NOT COPY/USE WITHOUT PERMISSION * */ #pragma once #include #include #include #include #include namespace mix_cc { namespace sql { template struct select_t : public prev_statement_t, public statement_t { static constexpr auto s_text = op::cmd_t::select; constexpr explicit select_t(Columns... columns) : prev_statement_t(), cols_(hana::make_tuple(columns...)) {} template constexpr auto from(Tab tab) { return from_t(*this, tab); } constexpr auto get_command() { auto sel_str_c = s_text + " "_s; auto col_names = hana::transform(cols_, [](auto col) { return col.col_name; }); auto r_str_c = hana::fold_left( col_names, [](auto col1, auto col2) { return col1 + ","_s + col2; }); return sel_str_c + r_str_c; } public: hana::tuple cols_; }; template auto select(Columns... columns) { return select_t(columns...); } } // namespace sql } // namespace mix_cc