MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / deleteSession

Method deleteSession

app/src/Sessions/DatabaseWorker.cpp:168–218  ·  view source on GitHub ↗

* @brief Cascades a delete across readings, raw bytes, snapshots, tags, columns, and the row. */

Source from the content-addressed store, hash-verified

166 * @brief Cascades a delete across readings, raw bytes, snapshots, tags, columns, and the row.
167 */
168void Sessions::DatabaseWorker::deleteSession(int sessionId, quint64 token)
169{
170 if (!m_db.isOpen()) {
171 Q_EMIT mutationFinished(token, false, tr("Database not open"));
172 return;
173 }
174
175 if (!m_db.transaction()) {
176 Q_EMIT mutationFinished(token, false, m_db.lastError().text());
177 return;
178 }
179
180 const auto runDelete = [&](const char* sql) -> bool {
181 QSqlQuery q(m_db);
182 q.prepare(QString::fromLatin1(sql));
183 q.bindValue(0, sessionId);
184 if (!q.exec()) [[unlikely]] {
185 qWarning() << "[DatabaseWorker] deleteSession" << sql << "failed:" << q.lastError().text();
186 return false;
187 }
188
189 return true;
190 };
191
192 const char* statements[] = {
193 "DELETE FROM readings WHERE session_id = ?",
194 "DELETE FROM raw_bytes WHERE session_id = ?",
195 "DELETE FROM table_snapshots WHERE session_id = ?",
196 "DELETE FROM session_tags WHERE session_id = ?",
197 "DELETE FROM columns WHERE session_id = ?",
198 "DELETE FROM sessions WHERE session_id = ?",
199 };
200
201 for (const char* sql : statements) {
202 if (!runDelete(sql)) {
203 m_db.rollback();
204 Q_EMIT mutationFinished(token, false, m_db.lastError().text());
205 return;
206 }
207 }
208
209 if (!m_db.commit()) {
210 m_db.rollback();
211 Q_EMIT mutationFinished(token, false, m_db.lastError().text());
212 return;
213 }
214
215 refreshSessionListInternal();
216 Q_EMIT sessionListRefreshed(m_sessionList);
217 Q_EMIT mutationFinished(token, true, QString());
218}
219
220/**
221 * @brief Persists the notes string for a session.

Callers

nothing calls this directly

Calls 5

execMethod · 0.80
commitMethod · 0.80
isOpenMethod · 0.45
textMethod · 0.45
lastErrorMethod · 0.45

Tested by

no test coverage detected