18 #include <boost/uuid/uuid.hpp>
19 #include <boost/uuid/uuid_io.hpp>
22 #include <basic/options/option.hh>
23 #include <basic/options/keys/inout.OptionKeys.gen.hh>
29 #include <basic/database/sql_utils.hh>
30 #include <basic/database/schema_generator/PrimaryKey.hh>
31 #include <basic/database/schema_generator/ForeignKey.hh>
32 #include <basic/database/schema_generator/Column.hh>
33 #include <basic/database/schema_generator/Schema.hh>
34 #include <basic/database/schema_generator/Constraint.hh>
35 #include <basic/Tracer.hh>
36 #include <basic/options/option.hh>
37 #include <basic/options/keys/inout.OptionKeys.gen.hh>
39 #include <basic/database/insert_statement_generator/InsertGenerator.hh>
40 #include <basic/database/insert_statement_generator/RowData.hh>
43 #include <utility/vector1.hh>
44 #include <utility/sql_database/DatabaseSessionManager.hh>
45 #include <utility/tools/make_vector.hh>
48 #include <cppdb/frontend.h>
56 static basic::Tracer
TR(
"protocols.features.ResidueFeatures");
64 using utility::sql_database::sessionOP;
65 using cppdb::statement;
66 using basic::database::insert_statement_generator::InsertGenerator;
67 using basic::database::insert_statement_generator::RowDataBaseOP;
68 using basic::database::insert_statement_generator::RowData;
84 using namespace basic::database::schema_generator;
86 Column struct_id(
"struct_id",
new DbUUID(),
false);
87 Column resNum(
"resNum",
new DbInteger(),
false);
88 Column name3(
"name3",
new DbText(),
false);
89 Column res_type(
"res_type",
new DbText(),
false);
92 residues_pkey_cols.push_back(struct_id);
93 residues_pkey_cols.push_back(resNum);
95 Schema residues(
"residues", PrimaryKey(residues_pkey_cols));
96 residues.add_column(struct_id);
97 residues.add_column(resNum);
98 residues.add_column(name3);
99 residues.add_column(res_type);
100 residues.add_foreign_key(ForeignKey(struct_id,
"structures",
"struct_id",
true));
104 residues.write(db_session);
111 dependencies.push_back(
"StructureFeatures");
119 boost::uuids::uuid
const struct_id,
131 boost::uuids::uuid
const struct_id,
136 InsertGenerator residues_insert(
"residues");
137 residues_insert.add_column(
"struct_id");
138 residues_insert.add_column(
"resNum");
139 residues_insert.add_column(
"name3");
140 residues_insert.add_column(
"res_type");
142 RowDataBaseOP struct_id_data =
new RowData<boost::uuids::uuid>(
"struct_id",struct_id);
145 if(!relevant_residues[resNum])
continue;
148 string const name3( res.
name3() );
149 string const res_type( res.
name() );
151 RowDataBaseOP resnum_data =
new RowData<Size>(
"resNum",resNum);
152 RowDataBaseOP name3_data =
new RowData<string>(
"name3",name3);
153 RowDataBaseOP res_type_data =
new RowData<string>(
"res_type",res_type);
155 residues_insert.add_row(utility::tools::make_vector(struct_id_data,resnum_data,name3_data,res_type_data));
159 residues_insert.write_to_database(db_session);
164 boost::uuids::uuid struct_id,
165 sessionOP db_session) {