eis/mix_cc/sql/column.h

49 lines
1.1 KiB
C
Raw Normal View History

/**
* @file mix_cc/sql/column.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 <mix_cc/sql/public.h>
#include <mix_cc/sql/condition.h>
#include <mix_cc/sql/value.h>
namespace mix_cc {
namespace sql {
template <typename Tp, typename Name>
struct column_t {
using name_type = Name;
using value_type = Tp;
name_type col_name;
constexpr auto operator<(Tp val) {
return condition_t(col_name, op::compare_t::lt, val);
}
constexpr auto operator>(Tp val) {
return condition_t(col_name, op::compare_t::gt, val);
}
constexpr auto operator==(Tp val) {
return condition_t(col_name, op::compare_t::eq, val);
}
constexpr auto like(Tp val) {
return condition_t(col_name, op::compare_t::like, val);
}
constexpr auto operator=(Tp val) { return value_t(col_name, val); }
};
template <typename Tp, typename Name>
constexpr column_t<Tp, Name> make_column_c(Name&& col_name) {
return column_t<Tp, Name>{col_name};
}
} // namespace sql
} // namespace mix_cc