aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--odb/schema-catalog.cxx14
-rw-r--r--odb/schema-catalog.hxx11
2 files changed, 25 insertions, 0 deletions
diff --git a/odb/schema-catalog.cxx b/odb/schema-catalog.cxx
index bec13a7..7205ff6 100644
--- a/odb/schema-catalog.cxx
+++ b/odb/schema-catalog.cxx
@@ -283,6 +283,20 @@ namespace odb
}
schema_version schema_catalog::
+ base_version (database_id id, const string& name)
+ {
+ const schema_catalog_impl& c (*schema_catalog_init::catalog);
+ schema_map::const_iterator i (c.schema.find (key (id, name)));
+
+ if (i == c.schema.end ())
+ throw unknown_schema (name);
+
+ const version_map& vm (i->second.migrate);
+ assert (!vm.empty ());
+ return vm.begin ()->first;
+ }
+
+ schema_version schema_catalog::
current_version (database_id id, const string& name)
{
const schema_catalog_impl& c (*schema_catalog_init::catalog);
diff --git a/odb/schema-catalog.hxx b/odb/schema-catalog.hxx
index 953f099..8b06a79 100644
--- a/odb/schema-catalog.hxx
+++ b/odb/schema-catalog.hxx
@@ -168,6 +168,17 @@ namespace odb
// Schema version information.
//
public:
+ // Return the base model version.
+ //
+ static schema_version
+ base_version (const database& db, const std::string& name = "")
+ {
+ return base_version (db.id (), name);
+ }
+
+ static schema_version
+ base_version (database_id, const std::string& name = "");
+
// Return the current model version.
//
static schema_version