diff --git a/data-access/engine/src/vlkb-obscore/src/config.hpp b/data-access/engine/src/vlkb-obscore/src/config.hpp index 0d573977afea56ba3a9b14ba6a9fe63f3abe7956..74d927c42ad327000f76957a25cba01596dba39f 100644 --- a/data-access/engine/src/vlkb-obscore/src/config.hpp +++ b/data-access/engine/src/vlkb-obscore/src/config.hpp @@ -14,7 +14,7 @@ class config std::string getFitsDir() const {return m_settings.at(fits_dir);} - std::string getDbUri(bool with_password = false) const {return m_settings.at(pg_uri);} + std::string getDbUri(/*bool with_password = false*/) const {return m_settings.at(pg_uri);} std::string getDbSchema() const {return m_settings.at(pg_schema);} std::string getObsCorePublisher() const {return m_settings.at(obscore_publisher);} diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.cpp index 4575c1b06765c446e066615101d15574beb26619..dbfe07e00ba20be7c4e73588ef28d53e0d38e31c 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.cpp @@ -12,73 +12,6 @@ SqlSchema::SqlSchema() void SqlSchema::reset(void) { - headersRow - = { - {headersColId::filename, "filename VARCHAR(4096) NOT NULL"}, - {headersColId::hdunum, "hdunum INTEGER NOT NULL"}, - {headersColId::pubdid, "pubdid VARCHAR(4096) UNIQUE"}, - {headersColId::header, "header TEXT NOT NULL"}, - {headersColId::survey_id, "survey_id INTEGER"}, - {headersColId::header_id, "header_id INTEGER PRIMARY KEY"} - }; - - - boundsgalRow - = { - {bgheader_id, "header_id INTEGER PRIMARY KEY"}, - {lfrom, "lon_from DECIMAL(21,16) NOT NULL" }, - {lto, "lon_to DECIMAL(21,16) NOT NULL" }, - {lunit, "lon_unit VARCHAR(16)" }, - - {bfrom, "lat_from DECIMAL(21,16) NOT NULL" }, - {bto, "lat_to DECIMAL(21,16) NOT NULL" }, - {bunit, "lat_unit VARCHAR(16)" }, - - {vfrom, "vel_from DECIMAL(21,8)" },// FIXME check why 8 not 16 - {vto, "vel_to DECIMAL(21,8)" }, - {vunit, "vel_unit VARCHAR(16)" }, - }; - - boundsicrsRow - = { - {biheader_id, "header_id INTEGER PRIMARY KEY"}, - {rfrom, "ra_from DECIMAL(21,16) NOT NULL" }, - {rto, "ra_to DECIMAL(21,16) NOT NULL" }, - {runit, "ra_unit VARCHAR(16)" }, - - {dfrom, "dec_from DECIMAL(21,16) NOT NULL" }, - {dto, "dec_to DECIMAL(21,16) NOT NULL" }, - {dunit, "dec_unit VARCHAR(16)" }, - }; - - verticesgalRow - = { - {vgheader_id, "header_id INTEGER PRIMARY KEY"}, - {p1lon, "p1_lon DECIMAL(21,16) NOT NULL"}, - {p1lat, "p1_lat DECIMAL(21,16) NOT NULL"}, - {p2lon, "p2_lon DECIMAL(21,16) NOT NULL"}, - {p2lat, "p2_lat DECIMAL(21,16) NOT NULL"}, - {p3lon, "p3_lon DECIMAL(21,16) NOT NULL"}, - {p3lat, "p3_lat DECIMAL(21,16) NOT NULL"}, - {p4lon, "p4_lon DECIMAL(21,16) NOT NULL"}, - {p4lat, "p4_lat DECIMAL(21,16) NOT NULL"} - }; - - verticesicrsRow - = { - {viheader_id, "header_id INTEGER PRIMARY KEY"}, - {p1ra, "p1_ra DECIMAL(21,16) NOT NULL"}, - {p1dec, "p1_dec DECIMAL(21,16) NOT NULL"}, - {p2ra, "p2_ra DECIMAL(21,16) NOT NULL"}, - {p2dec, "p2_dec DECIMAL(21,16) NOT NULL"}, - {p3ra, "p3_ra DECIMAL(21,16) NOT NULL"}, - {p3dec, "p3_dec DECIMAL(21,16) NOT NULL"}, - {p4ra, "p4_ra DECIMAL(21,16) NOT NULL"}, - {p4dec, "p4_dec DECIMAL(21,16) NOT NULL"} - }; - - - obscoreRow = { {dataproduct_type, "dataproduct_type VARCHAR"}, @@ -132,13 +65,6 @@ void SqlSchema::reset(void) void SqlSchema::initCols(void) { -// using namespace columns; - - m_columns[headers] = "(" + headersRow.concat_val_first_word() + ")"; - m_columns[boundsgal] = "(" + boundsgalRow.concat_val_first_word() + ")"; - m_columns[boundsicrs] = "(" + boundsicrsRow.concat_val_first_word() + ")"; - m_columns[verticesgal] = "(" + verticesgalRow.concat_val_first_word() + ")"; - m_columns[verticesicrs] = "(" + verticesicrsRow.concat_val_first_word() + ")"; m_columns[obscore] = "(" + obscoreRow.concat_val_first_word() + ")"; }; @@ -146,13 +72,6 @@ void SqlSchema::initCols(void) void SqlSchema::appendRow(void) { -// using namespace columns; - - m_values[headers] += "(" + headersRow.concat_val_all() + "),"; - m_values[boundsgal] += "(" + boundsgalRow.concat_val_all() + "),"; - m_values[boundsicrs] += "(" + boundsicrsRow.concat_val_all() + "),"; - m_values[verticesgal] += "(" + verticesgalRow.concat_val_all() + "),"; - m_values[verticesicrs] += "(" + verticesicrsRow.concat_val_all() + "),"; m_values[obscore] += "(" + obscoreRow.concat_val_all() + "),"; }; @@ -166,45 +85,3 @@ string SqlSchema::skl(string str) return str.substr(0, str.size() - 1); } - - - -#if 0 -vector<string> SqlSchema::concatedValues(void) -{ - vector<string> vVals; - std::map<Tables, std::string>::const_iterator it = m_values.begin(); - while(it != m_values.end()) - { - Tables t = it->first; - string cmd = it->second; - - vVals.push_back(cmd); - it++; - } - return vVals; -} - - -vector<string> SqlSchema::map2vect(const map<SqlSchema::Tables, string>& amap) -{ - vector<string> vVals; - std::map<SqlSchema::Tables, std::string>::const_iterator it = amap.begin(); - while(it != amap.end()) - { - SqlSchema::Tables t = it->first; - string cmd = it->second; - - vVals.push_back(cmd); - it++; - } - return vVals; -} - -vector<string> SqlSchema::concatedColumns(void) -{ - return map2vect(m_columns); -} -#endif - - diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.hpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.hpp index 535da16076cb96326751936db0c9281ea0668d6f..380cac42887f7908f09e161ac477f6fbfc55b9da 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.hpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema.hpp @@ -25,15 +25,9 @@ class SqlSchema void initCols(void); void appendRow(void); - // groups of columns - enum class headersColId {header_id, filename, hdunum, pubdid, header, survey_id}; - enum boundsgalColId {bgheader_id, lfrom, lto, lunit, bfrom, bto, bunit, vfrom, vto, vunit}; - enum boundsicrsColId {biheader_id, rfrom, rto, runit, dfrom, dto, dunit}; - enum verticesgalColId {vgheader_id, p1lon, p1lat, p2lon, p2lat, p3lon, p3lat, p4lon, p4lat}; - enum verticesicrsColId {viheader_id, p1ra, p1dec, p2ra, p2dec, p3ra, p3dec, p4ra, p4dec}; - enum obscoreColId {dataproduct_type, calib_level, + enum /* class */ obscoreColId {dataproduct_type, calib_level, obs_collection, obs_title, obs_id, obs_publisher_id, bib_reference, data_rights, access_url, access_format, access_estsize, target_name, @@ -47,40 +41,24 @@ class SqlSchema proposal_id, policy, groups}; - colmap<headersColId, std::string> headersRow; - colmap<boundsgalColId, std::string> boundsgalRow; - colmap<boundsicrsColId, std::string> boundsicrsRow; - colmap<verticesgalColId, std::string> verticesgalRow; - colmap<verticesicrsColId, std::string> verticesicrsRow; - colmap<obscoreColId, std::string> obscoreRow; - + colmap<obscoreColId, std::string> obscoreRow; // organize columns into tables - enum Tables {headers, - boundsgal, boundsicrs, verticesgal, verticesicrs, - obscore}; + enum Tables { obscore }; std::map<Tables, std::string> m_columns; std::map<Tables, std::string> m_values; // utils - std::string eto_string(enum headersColId cid) {return headersRow[cid].substr(0, headersRow[cid].find(' ')); }; - std::string eto_string(enum boundsgalColId cid) {return boundsgalRow[cid].substr(0, boundsgalRow[cid].find(' ')); }; - - std::string eto_string(enum Tables tid) {return tableNames[tid].substr(0, tableNames[tid].find(' ')); }; + std::string eto_string(enum Tables tid) + {return tableNames[tid].substr(0, tableNames[tid].find(' ')); }; void reset(void); - std::string skl(std::string str); - // skip last character + std::string skl(std::string str); // skip last character std::map<Tables, std::string> tableNames{ - {headers , "headers"}, - {boundsgal, "cubeboundsgalactic"}, - {boundsicrs, "cubeboundsicrs"}, - {verticesgal, "verticesgalactic"}, - {verticesicrs, "verticesicrs"}, {obscore, "obscore"}, }; diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_CREATE.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_CREATE.cpp index 02de746c3a7d1a5fa1c289ae011ad220381df012..8413c041ee7de136ddf8abb1e2a13dda2813faa8 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_CREATE.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_CREATE.cpp @@ -9,8 +9,7 @@ SqlSchema_CREATE::SqlSchema_CREATE(void) appendRow(); } -// skip first '(' and last ',' character -// FIXME this is no good +// skip first '(' and last ',' character; FIXME this is no good string skfl(string str) { return str.substr(1, str.size() - 2); @@ -20,12 +19,6 @@ string skfl(string str) vector<string> SqlSchema_CREATE::getCREATE(void) { vector<string> vCREATE{ - /* {"DROP TABLE IF EXISTS headers CASCADE; CREATE TABLE headers (" + skfl(m_values[headers])}, - {"DROP TABLE IF EXISTS cubeboundsgalactic CASCADE; CREATE TABLE cubeboundsgalactic (" + skfl(m_values[boundsgal])}, - {"DROP TABLE IF EXISTS cubeboundsicrs CASCADE; CREATE TABLE cubeboundsicrs (" + skfl(m_values[boundsicrs])}, - {"DROP TABLE IF EXISTS verticesgalactic CASCADE; CREATE TABLE verticesgalactic (" + skfl(m_values[verticesgal])}, - {"DROP TABLE IF EXISTS verticesicrs CASCADE; CREATE TABLE verticesicrs (" + skfl(m_values[verticesicrs])}, - */ {"DROP TABLE IF EXISTS obscore CASCADE; CREATE TABLE obscore " + skl(m_values[obscore])}, }; return vCREATE; diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_DELETE.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_DELETE.cpp index 0c6f0bcdcea6ea448ac76a2ba05f74a06a7e0dcb..61b3b30a4ef2eb1e71bed12f406aa6a12c567814 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_DELETE.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_DELETE.cpp @@ -18,28 +18,10 @@ vector<string> SqlSchema_DELETE::getCommand(int sid, const Survey& surv) string obsTitleStr = surv.getObsTitle(); vector<string> vDELETE{ -/* {"DELETE FROM cubeboundsgalactic WHERE header_id IN (SELECT header_id FROM headers WHERE survey_id = " + sidStr + ")"}, - {"DELETE FROM cubeboundsicrs WHERE header_id IN (SELECT header_id FROM headers WHERE survey_id = " + sidStr + ")"}, - {"DELETE FROM verticesgalactic WHERE header_id IN (SELECT header_id FROM headers WHERE survey_id = " + sidStr + ")"}, - {"DELETE FROM verticesicrs WHERE header_id IN (SELECT header_id FROM headers WHERE survey_id = " + sidStr + ")"}, - {"DELETE FROM headers WHERE survey_id = " + sidStr}, -*/ - {"DELETE FROM obscore WHERE obs_collection = \'" + obsCollStr + "\' AND obs_title = \'" + obsTitleStr + "\'"}, + {"DELETE FROM obscore WHERE obs_collection = \'" + obsCollStr + + "\' AND obs_title = \'" + obsTitleStr + "\'"}, }; return vDELETE; } -/* NOTE: -obscore handled separately -obscore_vlkb handled separately - -static relative to for-cycle: sid & tabName[headers] - -for(tableName : tableNames) -{ - cmdString = "DELETE FROM " + tableName + " WHERE header_id IN (SELECT header_id FROM " + tabName[headers] + " WHERE survey_id = " + to_string(sid) + ")" - vCmd.push_back(cmdString); -} - -*/ diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp index 6e71b073e8de7b6655843a75707e4da896396f5d..6183498607b04f3a08fd9c749f0f22adab8098b5 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp @@ -21,10 +21,6 @@ using namespace std; -//---------------------------------------------------------------- -// utils -//---------------------------------------------------------------- - string to_string(int precision, double value) { stringstream stream; @@ -161,53 +157,6 @@ string to_sql_value(fitsfiles::key_values_by_type key_values, string key) } } -/* -string get_wavelen(int precision, fitsfiles::key_values_by_type key_values) -{ - const double UNIT_CONVERT = 0.001; // FIXME header-card unit [mm] but ObsCore em_ is [m] - if(key_values.doubleValues.find("WAVELEN") == key_values.doubleValues.end() ) - { - if(key_values.doubleValues.find("WAVELENG") == key_values.doubleValues.end() ) - { - if(key_values.doubleValues.find("WAVELNTH") == key_values.doubleValues.end() ) - { - return "NULL"; - } - else - { - return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELNTH"]); - } - } - else - { - return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELENG"]); - } - } - else - { - return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELEN"]); - } -}*/ - - -/*/ trim from start (in place) -inline void ltrim(std::string &s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](char ch) { - return !std::isspace(ch); - })); -} - -// trim from end (in place) -inline void rtrim(std::string &s) { - s.erase(std::find_if(s.rbegin(), s.rend(), [](char ch) {return !std::isspace(ch);} ).base(), s.end()); -} - -// trim from both ends (in place) -inline void trim(std::string &s) { - rtrim(s); - ltrim(s); -} -*/ // returns band in wavelen [m] double parse_transition(string trans) @@ -233,9 +182,6 @@ double parse_transition(string trans) } -//---------------------------------------------------------------------- -// public API: ObsCore row -//---------------------------------------------------------------------- void SqlSchema_INSERT::appendRow( const int calib_level, const string& obs_collection, @@ -320,7 +266,7 @@ void SqlSchema_INSERT::appendRow( { const double SPEED_OF_LIGHT{299792458};// [m/s] double val{SPEED_OF_LIGHT / rest_frequency}; - obscoreRow[em_min] = (rest_frequency==0.0) ? "NULL" : to_string(val); //get_wavelen(EM_PRECISION, hdu.key_values); + obscoreRow[em_min] = (rest_frequency==0.0) ? "NULL" : to_string(val); } catch(const std::exception& ex) { @@ -390,13 +336,7 @@ void SqlSchema_INSERT::appendRow( vector<string> SqlSchema_INSERT::getINSERT(void) { vector<string> vCmds{ - /* {"INSERT INTO headers " + m_columns[headers] + " VALUES " + skl(m_values[headers])}, - {"INSERT INTO cubeboundsgalactic " + m_columns[boundsgal] + " VALUES " + skl(m_values[boundsgal])}, - {"INSERT INTO cubeboundsicrs " + m_columns[boundsicrs] + " VALUES " + skl(m_values[boundsicrs])}, - {"INSERT INTO verticesgalactic " + m_columns[verticesgal] + " VALUES " + skl(m_values[verticesgal])}, - {"INSERT INTO verticesicrs " + m_columns[verticesicrs] + " VALUES " + skl(m_values[verticesicrs])}, - */ - {"INSERT INTO obscore " + m_columns[obscore] + " VALUES " + skl(m_values[obscore])}, + {"INSERT INTO obscore " + m_columns[obscore] + " VALUES " + skl(m_values[obscore])}, }; reset(); return vCmds; diff --git a/data-access/engine/src/vlkb-obscore/src/database/database.cpp b/data-access/engine/src/vlkb-obscore/src/database/database.cpp index 7fdf3d5917a1f4bece168dd779276841d65fda69..0ea9fe4ce057a17761b0c2c859b016ee0702f620 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/database.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/database.cpp @@ -18,7 +18,6 @@ using namespace std; -// internal struct db_bounds { @@ -29,76 +28,8 @@ struct db_bounds double lat_to; }; -vector<db_bounds> bounds_reversed(DbConn& db) -{ - LOG_trace(__func__); - - const double default_when_null = 0.0; - struct db_bounds bounds; - vector<db_bounds> returned_bounds; - - SqlSchema schema; - const string lon_from{schema.eto_string(SqlSchema::lfrom)}; - const string lon_to {schema.eto_string(SqlSchema::lto)}; - const string lat_from{schema.eto_string(SqlSchema::bfrom)}; - const string lat_to {schema.eto_string(SqlSchema::bto)}; - const string table_boundsgalactic{schema.eto_string(SqlSchema::boundsgal)}; - -//--- assert LON LAT from < to - string sql{ - "SELECT header_id," + lon_from + "," + lon_to + "," + lat_from + "," + lat_to - + " FROM "+ table_boundsgalactic - + " WHERE (" - + lon_from + " > " + lon_to - + ") or (" - + lat_from + " > " + lat_to + ")"}; - -//---- assert LON LAT are normalized - string sql2{ - "SELECT header_id," + lon_from + "," + lon_to + "," + lat_from + "," + lat_to - + " FROM "+ table_boundsgalactic - + " WHERE (" - + lon_from + " > " + lon_to - + ") or (" - "(" + lon_from + " < 0) and ((" + lon_from + " < -180) or (" + lon_to + " >= 180 ))" - ") or (" - "(" + lon_from + " >= 0) and ((" + lon_from + " >= 360) or (" + lon_to + " >= 360))" - ") or (" - + lat_from + " > " + lat_to - + ") or (" - "(" + lat_from + " < -90 ) or (" + lat_from + " >= 90) or " - "(" + lat_to + " < -90 ) or (" + lat_to + " >= 90)" - ")"}; -//---- - - - pqxx::result pqxx_result{db.dbExecQuery3(sql2)}; - - try - { - for (auto row: pqxx_result) - { - // FIXME take col-names SqlSchema_SELECT_bouns - bounds.header_id = row["header_id"].as<unsigned int>(); - bounds.lon_from = row[lon_from].as<double>(default_when_null); - bounds.lon_to = row[lon_to].as<double>(default_when_null); - bounds.lat_from = row[lat_from].as<double>(default_when_null); - bounds.lat_to = row[lat_to].as<double>(default_when_null); - - returned_bounds.push_back(bounds); - } - } - catch (std::exception const &e) - { - LOG_STREAM << "ERR " + string(__FILE__) + "." + to_string(__LINE__) + ": " << e.what() << endl; - } - - return returned_bounds; -} -// external - //----------------------------------------------------------------------// // init db: // all tables will be deleted if existed @@ -138,24 +69,7 @@ vector<string> database::dbCheck(const string db_uri, const string db_schema) vector<string> result_strings; - // check 1: cube/image bounds in right order: from <= to - -/* vector<db_bounds> reversed_bounds = bounds_reversed(db); - - if(reversed_bounds.size() > 0) result_strings.push_back("assert from < to failed in these rows:"); - for(db_bounds one_row : reversed_bounds) - { - result_strings.push_back( - to_string(one_row.header_id) - + ": (" + to_string(one_row.lon_from) - + ", " + to_string(one_row.lon_to) - + ") (" + to_string(one_row.lat_from) - + ", " + to_string(one_row.lat_to) - + ")" - ); - } -*/ - // check 2: rows count equal in all tables + // check 1: rows count equal in all tables vector<string> tables = db.queryTableNames();