#ifndef SLICER_DB_SQLSELECTDESERIALIZER_H #define SLICER_DB_SQLSELECTDESERIALIZER_H #include #include #include namespace Slicer { class NoRowsReturned : public std::runtime_error { public: NoRowsReturned(); }; class TooManyRowsReturned : public std::runtime_error { public: TooManyRowsReturned(); }; class DLL_PUBLIC SqlSelectDeserializer : public Slicer::Deserializer { public: SqlSelectDeserializer(DB::SelectCommand &, IceUtil::Optional typeIdCol = IceUtil::Optional()); virtual void Deserialize(Slicer::ModelPartPtr) override; protected: void DLL_PRIVATE DeserializeSimple(Slicer::ModelPartPtr); void DLL_PRIVATE DeserializeObject(Slicer::ModelPartPtr); void DLL_PRIVATE DeserializeSequence(Slicer::ModelPartPtr); void DLL_PRIVATE DeserializeRow(Slicer::ModelPartPtr); DB::SelectCommand & cmd; unsigned int columnCount; IceUtil::Optional typeIdColName; IceUtil::Optional typeIdColIdx; }; } #endif