diff options
Diffstat (limited to 'lib/database.cpp')
-rw-r--r-- | lib/database.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/database.cpp b/lib/database.cpp index 563ec31..c7b37ec 100644 --- a/lib/database.cpp +++ b/lib/database.cpp | |||
@@ -76,6 +76,38 @@ namespace verbly { | |||
76 | return query<pronunciation>(*this, ppdb_, std::move(where), std::move(sortOrder), limit); | 76 | return query<pronunciation>(*this, ppdb_, std::move(where), std::move(sortOrder), limit); |
77 | } | 77 | } |
78 | 78 | ||
79 | std::set<std::string> database::selrestrs(int partId) const | ||
80 | { | ||
81 | std::string queryString = "SELECT selrestr FROM selrestrs WHERE part_id = ?"; | ||
82 | |||
83 | sqlite3_stmt* ppstmt; | ||
84 | if (sqlite3_prepare_v2(ppdb_, queryString.c_str(), queryString.length(), &ppstmt, NULL) != SQLITE_OK) | ||
85 | { | ||
86 | std::string errorMsg = sqlite3_errmsg(ppdb_); | ||
87 | sqlite3_finalize(ppstmt); | ||
88 | |||
89 | throw database_error("Error preparing query", errorMsg); | ||
90 | } | ||
91 | |||
92 | if (sqlite3_bind_int(ppstmt, 1, partId) != SQLITE_OK) | ||
93 | { | ||
94 | std::string errorMsg = sqlite3_errmsg(ppdb_); | ||
95 | sqlite3_finalize(ppstmt); | ||
96 | |||
97 | throw database_error("Error binding value to query", errorMsg); | ||
98 | } | ||
99 | |||
100 | std::set<std::string> result; | ||
101 | while (sqlite3_step(ppstmt) == SQLITE_ROW) | ||
102 | { | ||
103 | result.insert(reinterpret_cast<const char*>(sqlite3_column_blob(ppstmt, 0))); | ||
104 | } | ||
105 | |||
106 | sqlite3_finalize(ppstmt); | ||
107 | |||
108 | return result; | ||
109 | } | ||
110 | |||
79 | std::set<std::string> database::synrestrs(int partId) const | 111 | std::set<std::string> database::synrestrs(int partId) const |
80 | { | 112 | { |
81 | std::string queryString = "SELECT synrestr FROM synrestrs WHERE part_id = ?"; | 113 | std::string queryString = "SELECT synrestr FROM synrestrs WHERE part_id = ?"; |