21 #include <boost/uuid/uuid.hpp>
22 #include <boost/uuid/uuid_io.hpp>
31 #include <numeric/xyzVector.hh>
32 #include <utility/vector1.hh>
33 #include <utility/sql_database/DatabaseSessionManager.hh>
34 #include <utility/tools/make_vector.hh>
37 #include <basic/database/sql_utils.hh>
38 #include <basic/database/schema_generator/PrimaryKey.hh>
39 #include <basic/database/schema_generator/ForeignKey.hh>
40 #include <basic/database/schema_generator/Column.hh>
41 #include <basic/database/schema_generator/Schema.hh>
42 #include <basic/database/schema_generator/Constraint.hh>
43 #include <basic/options/option.hh>
44 #include <basic/options/keys/inout.OptionKeys.gen.hh>
47 #include <basic/database/insert_statement_generator/InsertGenerator.hh>
48 #include <basic/database/insert_statement_generator/RowData.hh>
51 #include <cppdb/frontend.h>
54 #include <boost/foreach.hpp>
55 #define foreach BOOST_FOREACH
74 using basic::database::table_exists;
75 using utility::sql_database::sessionOP;
77 using cppdb::statement;
79 using basic::database::insert_statement_generator::InsertGenerator;
80 using basic::database::insert_statement_generator::RowDataBaseOP;
81 using basic::database::insert_statement_generator::RowData;
88 using namespace basic::database::schema_generator;
91 Column struct_id(
"struct_id",
new DbUUID(),
false);
92 Column comment_key(
"comment_key",
new DbTextKey(),
false);
93 Column value(
"value",
new DbText(),
false);
96 pkey_cols.push_back(struct_id);
97 pkey_cols.push_back(comment_key);
99 Schema pose_comments(
"pose_comments", PrimaryKey(pkey_cols));
100 pose_comments.add_column(struct_id);
101 pose_comments.add_column(comment_key);
102 pose_comments.add_column(value);
104 pose_comments.add_foreign_key(ForeignKey(struct_id,
"structures",
"struct_id",
true));
105 pose_comments.write(db_session);
112 dependencies.push_back(
"StructureFeatures");
121 boost::uuids::uuid struct_id,
125 InsertGenerator pose_comments_insert(
"pose_comments");
126 pose_comments_insert.add_column(
"struct_id");
127 pose_comments_insert.add_column(
"comment_key");
128 pose_comments_insert.add_column(
"value");
131 typedef map< string, string >::value_type kv_pair;
133 RowDataBaseOP struct_id_data =
new RowData<boost::uuids::uuid>(
"struct_id",struct_id);
137 RowDataBaseOP comment_key_data =
new RowData<string>(
"comment_key",kv.first);
138 RowDataBaseOP value_data =
new RowData<string>(
"value",kv.second);
140 pose_comments_insert.add_row(utility::tools::make_vector(struct_id_data,comment_key_data,value_data));
143 pose_comments_insert.write_to_database(db_session);
149 boost::uuids::uuid struct_id,
150 utility::sql_database::sessionOP db_session
153 std::string statement_string =
"DELETE FROM pose_comments where struct_id = ?;";
154 statement stmt(basic::database::safely_prepare_statement(statement_string,db_session));
155 stmt.bind(1,struct_id);
156 basic::database::safely_write_to_database(stmt);
162 sessionOP db_session,
163 boost::uuids::uuid struct_id,
166 if(!table_exists(db_session,
"pose_comments"))
return;
176 " pose_comments.struct_id = ?;";
177 statement stmt(basic::database::safely_prepare_statement(statement_string,db_session));
178 stmt.bind(1,struct_id);
180 result res(basic::database::safely_read_from_database(stmt));