Column.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright: All Rights Reserved
  2. // Author: egametang@gmail.com (tanghai)
  3. #ifndef ORM_COLUMN_H
  4. #define ORM_COLUMN_H
  5. #include <list>
  6. #include <string>
  7. #include "Orm/Expr.h"
  8. namespace Egametang {
  9. class Column
  10. {
  11. private:
  12. std::list<std::string> columns;
  13. public:
  14. Column();
  15. Column(const std::string& name);
  16. Column(const Column& column);
  17. ~Column();
  18. bool Empty() const;
  19. Column& operator()(const std::string& name);
  20. std::string ToString() const;
  21. void CheckAllColumns(const google::protobuf::Message& message) const;
  22. template <typename T>
  23. Expr operator>(const T& value)
  24. {
  25. return Oper(*this, ">", value);
  26. }
  27. template <typename T>
  28. Expr operator>=(const T& value)
  29. {
  30. return Oper(*this, ">=", value);
  31. }
  32. template <typename T>
  33. Expr operator<(const T& value)
  34. {
  35. return Oper(*this, "<", value);
  36. }
  37. template <typename T>
  38. Expr operator<=(const T& value)
  39. {
  40. return Oper(*this, "<=", value);
  41. }
  42. template <typename T>
  43. Expr operator!=(const T& value)
  44. {
  45. return Oper(*this, "!=", value);
  46. }
  47. template <typename T>
  48. Expr operator==(const T& value)
  49. {
  50. return Oper(*this, "=", value);
  51. }
  52. Expr like(const std::string& value)
  53. {
  54. return Oper(*this, "like", value);
  55. }
  56. };
  57. } // namespace Egametang
  58. #endif // ORM_COLUMN_H