]> git.sesse.net Git - pkanalytics/commitdiff
Export formations to the JSON.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 29 May 2023 15:22:30 +0000 (17:22 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 29 May 2023 15:22:30 +0000 (17:22 +0200)
json.cpp

index ec7d3eb3c58a78714c6b7acf5a546015646ddd7e..09b2c4d29569220980e632ef1c7147e277de46d6 100644 (file)
--- a/json.cpp
+++ b/json.cpp
@@ -39,6 +39,40 @@ QJsonArray export_players_to_json(sqlite3 *db)
        return players;
 }
 
+QJsonArray export_formations_to_json(sqlite3 *db)
+{
+       QJsonArray formations;
+
+       sqlite3_stmt *stmt;
+       int ret = sqlite3_prepare_v2(db, "SELECT formation, offense, name FROM formation ORDER BY name", -1, &stmt, 0);
+       if (ret != SQLITE_OK) {
+               fprintf(stderr, "SELECT prepare: %s\n", sqlite3_errmsg(db));
+               abort();
+       }
+       for ( ;; ) {
+               ret = sqlite3_step(stmt);
+               if (ret == SQLITE_ROW) {
+                       QJsonObject f;
+                       f.insert("formation_id", sqlite3_column_int(stmt, 0));
+                       f.insert("offense", bool(sqlite3_column_int(stmt, 1)));
+                       f.insert("name", (const char *)sqlite3_column_text(stmt, 2));
+                       formations.push_back(std::move(f));
+               } else if (ret == SQLITE_DONE) {
+                       break;
+               } else {
+                       fprintf(stderr, "SELECT step: %s\n", sqlite3_errmsg(db));
+                       abort();
+               }
+       }
+       ret = sqlite3_finalize(stmt);
+       if (ret != SQLITE_OK) {
+               fprintf(stderr, "SELECT finalize: %s\n", sqlite3_errmsg(db));
+               abort();
+       }
+
+       return formations;
+}
+
 QJsonArray export_matches_to_json(sqlite3 *db)
 {
        QJsonArray matches;
@@ -121,6 +155,7 @@ void export_to_json(sqlite3 *db, const char *filename)
 {
        QJsonObject obj;
        obj.insert("players", export_players_to_json(db));
+       obj.insert("formations", export_formations_to_json(db));
        obj.insert("matches", export_matches_to_json(db));
 
        QByteArray serialized = QString(QJsonDocument(obj).toJson(QJsonDocument::Compact)).toUtf8();