]> git.sesse.net Git - pkanalytics/blobdiff - events.cpp
Make the formation buttons actually do something.
[pkanalytics] / events.cpp
index cbdb30344e21e2c221b0ae7a7ca7cbba8e76dc08..0a50f3b26de7b5d7c6ce7985ba2de3aa076da3a9 100644 (file)
@@ -295,6 +295,34 @@ void EventsModel::set_event_type(unsigned pos, const string &type)
        }
 }
 
+void EventsModel::set_event_formation(unsigned pos, int formation_id)
+{
+       events[pos].formation_id = formation_id;
+       emit dataChanged(createIndex(pos, 0), createIndex(pos, 2));
+
+       sqlite3_stmt *stmt;
+       int ret = sqlite3_prepare_v2(db, "UPDATE event SET formation=? WHERE event=?", -1, &stmt, 0);
+       if (ret != SQLITE_OK) {
+               fprintf(stderr, "INSERT prepare: %s\n", sqlite3_errmsg(db));
+               abort();
+       }
+
+       sqlite3_bind_int64(stmt, 1, formation_id);
+       sqlite3_bind_int64(stmt, 2, events[pos].event_id);
+
+       ret = sqlite3_step(stmt);
+       if (ret == SQLITE_ROW) {
+               fprintf(stderr, "UPDATE step: %s\n", sqlite3_errmsg(db));
+               abort();
+       }
+
+       ret = sqlite3_finalize(stmt);
+       if (ret != SQLITE_OK) {
+               fprintf(stderr, "UPDATE finalize: %s\n", sqlite3_errmsg(db));
+               abort();
+       }
+}
+
 unsigned EventsModel::get_last_event_pos(uint64_t t) const
 {
        // upper_bound() gives first where e.t > t,