diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-09-28 08:41:17 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-09-28 08:41:17 +0200 |
commit | 2e258ea80deae21b478c6aa8deae50bd24194c11 (patch) | |
tree | f67b51509a204ed3bf80db0be8a63f5e64d5f6f0 | |
parent | 4553b663da99e37b4b80251fdb8906ef8944a42e (diff) |
Return number of calls made from migrate_data()
Can be useful for debugging/tracing.
-rw-r--r-- | odb/schema-catalog.cxx | 14 | ||||
-rw-r--r-- | odb/schema-catalog.hxx | 5 |
2 files changed, 13 insertions, 6 deletions
diff --git a/odb/schema-catalog.cxx b/odb/schema-catalog.cxx index 8a5ce71..15cdcb9 100644 --- a/odb/schema-catalog.cxx +++ b/odb/schema-catalog.cxx @@ -194,13 +194,13 @@ namespace odb db.schema_version_migration (v, m == migrate_pre, name); } - void schema_catalog:: + size_t schema_catalog:: migrate_data (database& db, schema_version v, const string& name) { if (v == 0) { if (!db.schema_migration ()) - return; + return 0; v = db.schema_version (); } @@ -209,16 +209,22 @@ namespace odb data_map::const_iterator i (c.data.find (data_key (name, v))); if (i == c.data.end ()) - return; // No data migration for this schema/version. + return 0; // No data migration for this schema/version. - const data_functions& df (i->second); + size_t r (0); + const data_functions& df (i->second); for (data_functions::const_iterator i (df.begin ()), e (df.end ()); i != e; ++i) { if (i->id == id_common || i->id == db.id ()) + { i->migrate (db); + r++; + } } + + return r; } void schema_catalog:: diff --git a/odb/schema-catalog.hxx b/odb/schema-catalog.hxx index 5af7c48..a58a2dc 100644 --- a/odb/schema-catalog.hxx +++ b/odb/schema-catalog.hxx @@ -10,6 +10,7 @@ #include <odb/details/config.hxx> // ODB_CXX11 #include <string> +#include <cstddef> // std::size_t #ifdef ODB_CXX11 # include <functional> // std::function @@ -63,9 +64,9 @@ namespace odb // public: // If version is 0, then use the current version and also check whether - // we are in migration. + // we are in migration. Returns the number of calls made. // - static void + static std::size_t migrate_data (database&, schema_version = 0, const std::string& name = ""); |