DbResult.h 787 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright: All Rights Reserved
  2. // Author: egametang@gmail.com (tanghai)
  3. #ifndef ORM_DBRESULT_H
  4. #define ORM_DBRESULT_H
  5. #include <vector>
  6. #include <cppconn/resultset.h>
  7. #include "Base/Typedef.h"
  8. #include "Orm/Typedef.h"
  9. namespace Egametang {
  10. class DbResult
  11. {
  12. private:
  13. ResultSetPtr resultSet;
  14. void FillMessage(ProtobufMessagePtr message);
  15. public:
  16. explicit DbResult(ResultSetPtr resultSet);
  17. void One(ProtobufMessagePtr message);
  18. std::size_t Count();
  19. template <typename Table>
  20. void All(std::vector<std::shared_ptr<Table> >& messages)
  21. {
  22. for (std::size_t i = 0; i < messages.size(); ++i)
  23. {
  24. if (!resultSet->next())
  25. {
  26. return;
  27. }
  28. ProtobufMessagePtr message = messages[i];
  29. FillMessage(message);
  30. }
  31. }
  32. };
  33. } // namespace Egametang
  34. #endif // ORM_DBRESULT_H