diff options
Diffstat (limited to 'tagstats/statistics_handler.hpp')
-rw-r--r-- | tagstats/statistics_handler.hpp | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/tagstats/statistics_handler.hpp b/tagstats/statistics_handler.hpp index 7f5587e..dadbe7a 100644 --- a/tagstats/statistics_handler.hpp +++ b/tagstats/statistics_handler.hpp @@ -32,7 +32,7 @@ class StatisticsHandler : public Osmium::Handler::Base { public: - StatisticsHandler() : Base() { + StatisticsHandler(Osmium::Sqlite::Database& database) : Base(), m_database(database) { // if you change anything in this array, also change the corresponding struct below static const char *sn[] = { "nodes", @@ -136,22 +136,8 @@ public: } void final() { - unlink("count.db"); - Osmium::Sqlite::Database db("count.db"); - - sqlite3 *sqlite_db = db.get_sqlite3(); - if (SQLITE_OK != sqlite3_exec(sqlite_db, \ - "CREATE TABLE stats (" \ - " key TEXT, " \ - " value INT64 " \ - ");", 0, 0, 0)) { - std::cerr << "Database error: " << sqlite3_errmsg(sqlite_db) << "\n"; - sqlite3_close(sqlite_db); - exit(1); - } - - Osmium::Sqlite::Statement *statement_insert_into_main_stats = db.prepare("INSERT INTO stats (key, value) VALUES (?, ?);"); - db.begin_transaction(); + Osmium::Sqlite::Statement* statement_insert_into_main_stats = m_database.prepare("INSERT INTO stats (key, value) VALUES (?, ?);"); + m_database.begin_transaction(); for (int i=0; m_stat_names[i]; ++i) { statement_insert_into_main_stats @@ -164,7 +150,7 @@ public: ->bind_int64( ((uint64_t *) &m_stats)[0] - ((uint64_t *) &m_stats)[1] ) ->execute(); - db.commit(); + m_database.commit(); delete statement_insert_into_main_stats; } @@ -204,6 +190,8 @@ private: const char **m_stat_names; + Osmium::Sqlite::Database& m_database; + osm_object_id_t m_id; osm_version_t m_version; int m_tag_count; |