18 #include <boost/uuid/uuid.hpp>
19 #include <boost/uuid/uuid_io.hpp>
27 #include <utility/sql_database/DatabaseSessionManager.hh>
28 #include <utility/vector1.hh>
31 #include <basic/options/option.hh>
32 #include <basic/options/keys/inout.OptionKeys.gen.hh>
33 #include <basic/database/sql_utils.hh>
35 #include <basic/database/schema_generator/PrimaryKey.hh>
36 #include <basic/database/schema_generator/ForeignKey.hh>
37 #include <basic/database/schema_generator/Column.hh>
38 #include <basic/database/schema_generator/Schema.hh>
42 #include <cppdb/frontend.h>
57 using utility::sql_database::sessionOP;
58 using cppdb::statement;
74 geo_sol_energy_(src.geo_sol_energy_)
91 using namespace basic::database::schema_generator;
93 Column struct_id(
"struct_id",
new DbUUID());
94 Column hbond_site_id(
"hbond_site_id",
new DbInteger());
95 Column geometric_solvation_exact(
"geometric_solvation_exact",
new DbReal());
97 Columns primary_key_columns;
98 primary_key_columns.push_back(struct_id);
99 primary_key_columns.push_back(hbond_site_id);
100 PrimaryKey primary_key(primary_key_columns);
102 Columns foreign_key_columns;
103 foreign_key_columns.push_back(struct_id);
104 foreign_key_columns.push_back(hbond_site_id);
106 reference_columns.push_back(
"struct_id");
107 reference_columns.push_back(
"site_id");
108 ForeignKey foreign_key(foreign_key_columns,
"hbond_sites", reference_columns,
true);
110 Schema table(
"geometric_solvation", primary_key);
111 table.add_foreign_key(foreign_key);
112 table.add_column(geometric_solvation_exact);
114 table.write(db_session);
120 dependencies.push_back(
"HBondFeatures");
128 boost::uuids::uuid struct_id,
138 " hbond_sites as site\n"
140 " site.struct_id = ?;";
141 statement select_statement(basic::database::safely_prepare_statement(select_string,db_session));
142 select_statement.bind(1,struct_id);
143 result res(basic::database::safely_read_from_database(select_statement));
146 Size site_id, resNum, atmNum;
147 res >> site_id >> resNum >> atmNum;
149 Real const geometric_solvation_exact(
155 std::string insert_string =
"INSERT INTO geometric_solvation (struct_id, hbond_site_id, geometric_solvation_exact) VALUES (?,?,?)";
156 statement insert_statement(basic::database::safely_prepare_statement(insert_string,db_session));
157 insert_statement.bind(1,struct_id);
158 insert_statement.bind(2,site_id);
159 insert_statement.bind(3,geometric_solvation_exact);
160 basic::database::safely_write_to_database(insert_statement);