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;
// Load the events, splitting them into matches as we go.
std::map<int, QJsonArray *> events_per_match;
sqlite3_stmt *stmt;
- int ret = sqlite3_prepare_v2(db, "SELECT match, t, player, type FROM event ORDER BY t", -1, &stmt, 0);
+ int ret = sqlite3_prepare_v2(db, "SELECT match, t, player, formation, type FROM event ORDER BY t", -1, &stmt, 0);
if (ret != SQLITE_OK) {
fprintf(stderr, "SELECT prepare: %s\n", sqlite3_errmsg(db));
abort();
} else {
e.insert("player", QJsonValue()); // null
}
- e.insert("type", (const char *)sqlite3_column_text(stmt, 3));
+ if (sqlite3_column_type(stmt, 3) == SQLITE_INTEGER) {
+ e.insert("formation", sqlite3_column_int(stmt, 3));
+ } else {
+ e.insert("formation", QJsonValue()); // null
+ }
+ e.insert("type", (const char *)sqlite3_column_text(stmt, 4));
events_per_match[match]->push_back(std::move(e));
} else if (ret == SQLITE_DONE) {
break;
{
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();