NAPISD
PAHdb website C++ backend
Loading...
Searching...
No Matches
PAHdb.h
1#ifndef PAHDB_H_
2#define PAHDB_H_
3
4#include "Exception.h"
5#include "PAHGeometry.h"
6
7#include <mysql++/mysql++.h>
8#include <mysql++/ssqls.h>
9
10sql_create_18(sql_properties, 1, 0, mysqlpp::sql_int_unsigned, uid,
11 mysqlpp::sql_int_unsigned, n_h, mysqlpp::sql_int_unsigned, n_c,
12 mysqlpp::sql_int_unsigned, n_n, mysqlpp::sql_int_unsigned, n_o,
13 mysqlpp::sql_int_unsigned, n_mg, mysqlpp::sql_int_unsigned, n_si,
14 mysqlpp::sql_int_unsigned, n_fe, mysqlpp::sql_int, charge,
15 mysqlpp::sql_int_unsigned, n_solo, mysqlpp::sql_int_unsigned,
16 n_duo, mysqlpp::sql_int_unsigned, n_trio,
17 mysqlpp::sql_int_unsigned, n_quartet, mysqlpp::sql_int_unsigned,
18 n_quintet, mysqlpp::sql_int_unsigned, n_ch,
19 mysqlpp::sql_int_unsigned, n_ch2, mysqlpp::sql_int_unsigned,
20 n_ch3, mysqlpp::sql_int_unsigned, n_chx);
21
22#include <unistd.h>
23
24#include <string>
25#include <string_view>
26#include <utility>
27#include <vector>
28
29class PAHdb {
30private:
31 const char *pre[3] = {"", "exp_", "anharmonic_"};
32
33public:
34 enum class Database : char { Theory, Experiment, Anharmonic };
35
36 void connect(std::string_view database, const std::string_view host,
37 std::string_view username, const std::string_view password,
38 int port, bool compress, int timeout,
39 const std::string_view socket);
40
41 void setTable(Database table);
42
43 void setProgress(double progress);
44
45 void setError(const char *error);
46
47 std::vector<std::vector<std::pair<double, double>>>
48 getTransitionsFromUIDsAndVersion(const std::vector<int> &uids, int version);
49
50 std::vector<std::vector<std::pair<double, double>>>
51 getTransitionsFromUIDAndVersion(int uid, int version);
52
53 std::vector<std::vector<std::pair<double, double>>>
54 getTransitionsFromVersion(int version, std::vector<int> &ids);
55
56 std::vector<std::vector<std::pair<double, double>>>
57 getTransitionsFromIds(const std::vector<int> &ids);
58
59 std::vector<std::vector<std::pair<double, double>>>
60 getTransitionsFromId(int id);
61
62 std::vector<std::vector<std::pair<double, double>>>
63 getExperimentalAndTheoreticalTransitionsFromId(int id);
64
65 std::vector<PAHGeometry> getGeometriesFromIds(const std::vector<int> &ids);
66
67 std::vector<sql_properties>
68 getPropertiesByUIDsAndVersion(const std::vector<int> &uids, int version);
69
70 std::vector<sql_properties> getPropertiesByIDs(const std::vector<int> &ids);
71
72 std::vector<std::string> getFormulaeFromIds(const std::vector<int> &ids);
73
74private:
75 mysqlpp::Connection _connection;
76
77 Database _table;
78};
79
80inline void PAHdb::setTable(Database table) { _table = table; }
81
82inline std::vector<std::vector<std::pair<double, double>>>
83PAHdb::getTransitionsFromId(int id) {
84 return (getTransitionsFromIds(std::vector<int>(1, id)));
85}
86
87inline std::vector<std::vector<std::pair<double, double>>>
88PAHdb::getTransitionsFromUIDAndVersion(int uid, int version) {
89 return (getTransitionsFromUIDsAndVersion(std::vector<int>(1, uid), version));
90}
91
92#endif /* PAHDB_H_ */
Definition PAHdb.h:29

Since FY2019 the NASA Ames PAH IR Spectroscopic Database is being supported through a directed Work Package at NASA Ames titled: "Laboratory Astrophysics - The NASA Ames PAH IR Spectroscopic Database".
Since FY2023 the NASA Ames PAH IR Spectroscopic Database is being supported through the Laboratory Astrophysics Rd 2 directed Work Package at NASA Ames.
© Copyright 2021-2025, Christiaan Boersma