File indexing completed on 2024-04-06 12:01:28
0001 #ifndef CondCore_CondDB_RunInfoSchema_h
0002 #define CondCore_CondDB_RunInfoSchema_h
0003
0004 #include "DbCore.h"
0005 #include "IDbSchema.h"
0006
0007 #include <boost/date_time/posix_time/posix_time.hpp>
0008
0009 namespace cond {
0010
0011 namespace persistency {
0012
0013 conddb_table(RUN_INFO) {
0014 conddb_column(RUN_NUMBER, cond::Time_t);
0015 conddb_column(START_TIME, boost::posix_time::ptime);
0016 conddb_column(END_TIME, boost::posix_time::ptime);
0017
0018 struct MAX_RUN_NUMBER {
0019 typedef cond::Time_t type;
0020 static constexpr size_t size = 0;
0021 static std::string tableName() { return RUN_NUMBER::tableName(); }
0022 static std::string fullyQualifiedName() { return "MAX(" + RUN_NUMBER::fullyQualifiedName() + ")"; }
0023 };
0024
0025 struct MIN_RUN_NUMBER {
0026 typedef cond::Time_t type;
0027 static constexpr size_t size = 0;
0028 static std::string tableName() { return RUN_NUMBER::tableName(); }
0029 static std::string fullyQualifiedName() { return "MIN(" + RUN_NUMBER::fullyQualifiedName() + ")"; }
0030 };
0031
0032 struct MIN_START_TIME {
0033 typedef boost::posix_time::ptime type;
0034 static constexpr size_t size = 0;
0035 static std::string tableName() { return START_TIME::tableName(); }
0036 static std::string fullyQualifiedName() { return "MIN(" + START_TIME::fullyQualifiedName() + ")"; }
0037 };
0038
0039 class Table : public IRunInfoTable {
0040 public:
0041 explicit Table(coral::ISchema& schema);
0042 ~Table() override {}
0043 bool exists() override;
0044 void create() override;
0045 bool select(cond::Time_t runNumber, boost::posix_time::ptime& start, boost::posix_time::ptime& end) override;
0046 cond::Time_t getLastInserted(boost::posix_time::ptime& start, boost::posix_time::ptime& end) override;
0047 bool getInclusiveRunRange(
0048 cond::Time_t lower,
0049 cond::Time_t upper,
0050 std::vector<std::tuple<cond::Time_t, boost::posix_time::ptime, boost::posix_time::ptime> >& runData)
0051 override;
0052 bool getInclusiveTimeRange(
0053 const boost::posix_time::ptime& lower,
0054 const boost::posix_time::ptime& upper,
0055 std::vector<std::tuple<cond::Time_t, boost::posix_time::ptime, boost::posix_time::ptime> >& runData)
0056 override;
0057 void insertOne(cond::Time_t runNumber,
0058 const boost::posix_time::ptime& start,
0059 const boost::posix_time::ptime& end) override;
0060 void insert(const std::vector<std::tuple<cond::Time_t, boost::posix_time::ptime, boost::posix_time::ptime> >&
0061 runs) override;
0062 void updateEnd(cond::Time_t runNumber, const boost::posix_time::ptime& end) override;
0063
0064 private:
0065 coral::ISchema& m_schema;
0066 };
0067 }
0068
0069 class RunInfoSchema : public IRunInfoSchema {
0070 public:
0071 explicit RunInfoSchema(coral::ISchema& schema);
0072 ~RunInfoSchema() override {}
0073 bool exists() override;
0074 bool create() override;
0075 IRunInfoTable& runInfoTable() override;
0076
0077 private:
0078 RUN_INFO::Table m_runInfoTable;
0079 };
0080
0081 }
0082 }
0083 #endif