11 #include <framework/database/LocalMetadataProvider.h>
13 #include <framework/logging/Logger.h>
15 namespace Belle2::Conditions {
18 MetadataProvider(usableTagStates), m_filename{std::move(filename)}, m_connection{m_filename},
19 m_globaltagStatus{m_connection,
"SELECT globalTagStatus FROM globaltags WHERE globalTagName=:globaltag",
true},
20 m_selectPayloads{m_connection, R
"SQL(
22 payloadName, globalTagName, payloadUrl, baseUrl, checksum,
23 firstExp, firstRun, finalExp, finalRun, revision
25 WHERE globalTagName=:globaltag AND
26 ((firstExp==:exp AND firstRun<=:run) OR firstExp<:exp) AND
27 (finalExp<0 OR (finalRun<0 AND finalExp>=:exp) OR finalExp>:exp OR (finalExp==:exp AND finalRun>=:run));
31 std::string LocalMetadataProvider::getGlobaltagStatus(
const std::string& globaltag)
34 if (m_globaltagStatus.execute(globaltag).step()) {
35 return m_globaltagStatus.getRow();
37 B2ERROR(
"Local Database: Global tag does not exist"
38 <<
LogVar(
"database", m_filename) <<
LogVar(
"globaltag", globaltag));
39 }
catch (std::exception& e) {
40 B2ERROR(
"Local Database: Error checking globaltag"
41 <<
LogVar(
"database", m_filename) <<
LogVar(
"globaltag", globaltag) <<
LogVar(
"error", e.what()));
46 bool LocalMetadataProvider::updatePayloads(
const std::string& globaltag,
int exp,
int run)
49 for (
auto && row : m_selectPayloads.execute(globaltag, exp, run)) {
50 addPayload(std::move(row),
"Local Database");
52 }
catch (std::exception& e) {
53 B2ERROR(
"Local Database: Error obtaining payloads"
54 <<
LogVar(
"database", m_filename) <<
LogVar(
"globaltag", globaltag) <<
LogVar(
"error", e.what()));