19 #include <basic/options/keys/parser.OptionKeys.gen.hh>
20 #include <basic/options/option.hh>
21 #include <basic/options/keys/inout.OptionKeys.gen.hh>
22 #include <basic/options/keys/out.OptionKeys.gen.hh>
23 #include <basic/database/sql_utils.hh>
26 #include <basic/database/schema_generator/PrimaryKey.hh>
27 #include <basic/database/schema_generator/ForeignKey.hh>
28 #include <basic/database/schema_generator/Column.hh>
29 #include <basic/database/schema_generator/Schema.hh>
32 #include <utility/sql_database/DatabaseSessionManager.hh>
33 #include <utility/vector1.hh>
36 #include <basic/Tracer.hh>
39 #include <cppdb/frontend.h>
49 static basic::Tracer
TR(
"protocols.features.BatchFeatures");
52 using std::stringstream;
53 using basic::options::OptionKeys::parser::protocol;
54 using basic::options::option;
57 using utility::sql_database::sessionOP;
58 using cppdb::statement;
75 using namespace basic::database::schema_generator;
78 Column(
"batch_id",
new DbInteger(),
false ,
false ));
80 ForeignKey protocol_id(
81 Column(
"protocol_id",
new DbInteger()),
86 Column name(Column(
"name",
new DbText()));
87 Column description(Column(
"description",
new DbText()));
89 Schema batches(
"batches", batch_id);
90 batches.add_foreign_key(protocol_id);
91 batches.add_column(name);
92 batches.add_column(description);
94 batches.write(db_session);
119 <<
"Writing to batches table with:" << std::endl
120 <<
"\tbatch_id '" << batch_id <<
"'" << std::endl
121 <<
"\tprotocol_id '" << protocol_id <<
"'" << std::endl
122 <<
"\tname '" << name <<
"'" << std::endl
123 <<
"\tdescription '" << description <<
"'" << std::endl;
129 switch(db_session->get_db_mode())
131 case utility::sql_database::DatabaseMode::sqlite3:
132 insert_string =
"INSERT OR IGNORE INTO batches (batch_id, protocol_id, name, description) VALUES (?,?,?,?);";
134 case utility::sql_database::DatabaseMode::mysql:
135 case utility::sql_database::DatabaseMode::postgres:
136 insert_string =
"INSERT IGNORE INTO batches (batch_id, protocol_id, name, description) VALUES (?,?,?,?);";
139 utility_exit_with_message(
140 "Unrecognized database mode: '" +
141 name_from_database_mode(db_session->get_db_mode()) +
"'");
144 cppdb::statement insert_statement = basic::database::safely_prepare_statement(insert_string,db_session);
145 insert_statement.bind(1,batch_id);
146 insert_statement.bind(2,protocol_id);
147 insert_statement.bind(3,name);
148 insert_statement.bind(4,description);
150 basic::database::safely_write_to_database(insert_statement);