19 #include <boost/uuid/uuid.hpp>
22 #include <basic/database/sql_utils.hh>
23 #include <basic/database/schema_generator/PrimaryKey.hh>
24 #include <basic/database/schema_generator/ForeignKey.hh>
25 #include <basic/database/schema_generator/Column.hh>
26 #include <basic/database/schema_generator/Schema.hh>
27 #include <basic/database/schema_generator/Constraint.hh>
30 #include <basic/options/option.hh>
31 #include <basic/options/keys/inout.OptionKeys.gen.hh>
41 #include <utility/sql_database/DatabaseSessionManager.hh>
42 #include <utility/vector1.hh>
43 #include <basic/database/sql_utils.hh>
46 #include <cppdb/frontend.h>
57 using std::stringstream;
78 using utility::sql_database::sessionOP;
79 using cppdb::statement;
92 utility_exit_with_message(
"ScoreTypeFeatures may not be constructed with a null-pointer ScoreFunctionOP" );
113 using namespace basic::database::schema_generator;
116 Column batch_id(
"batch_id",
new DbInteger(),
false);
117 Column score_type_id(
"score_type_id",
new DbInteger(),
false);
118 Column score_type_name(
"score_type_name",
new DbText(),
false);
121 pkey_cols.push_back(batch_id);
122 pkey_cols.push_back(score_type_id);
124 Schema score_types(
"score_types", PrimaryKey(pkey_cols));
125 score_types.add_column(batch_id);
126 score_types.add_column(score_type_id);
127 score_types.add_column(score_type_name);
129 score_types.add_foreign_key(ForeignKey(batch_id,
"batches",
"batch_id",
true));
131 score_types.write(db_session);
137 dependencies.push_back(
"ProtocolFeatures");
145 boost::uuids::uuid
const struct_id,
169 utility::sql_database::sessionOP ){}
178 switch(db_session->get_db_mode()){
179 case utility::sql_database::DatabaseMode::sqlite3:
180 statement_string =
"INSERT OR IGNORE INTO score_types (batch_id, score_type_id, score_type_name) VALUES (?,?,?);";
182 case utility::sql_database::DatabaseMode::mysql:
183 case utility::sql_database::DatabaseMode::postgres:
184 statement_string =
"INSERT IGNORE INTO score_types (batch_id, score_type_id, score_type_name) VALUES (?,?,?);";
187 utility_exit_with_message(
188 "Unrecognized database mode: '" +
189 name_from_database_mode(db_session->get_db_mode()) +
"'");
193 statement stmt(basic::database::safely_prepare_statement(statement_string,db_session));
196 ScoreType type(static_cast<ScoreType>(score_type_id));
199 stmt.bind(1,protocol_id);
200 stmt.bind(2,score_type_id);
201 stmt.bind(3,score_type);
202 basic::database::safely_write_to_database(stmt);