5 #ifndef ODB_SCHEMA_CATALOG_HXX
6 #define ODB_SCHEMA_CATALOG_HXX
10 #include <odb/details/config.hxx>
16 # include <functional>
21 #include <odb/details/export.hxx>
22 #include <odb/details/unused.hxx>
23 #include <odb/details/meta/static-assert.hxx>
33 create_schema (
database&,
const std::string& name =
"",
bool drop =
true);
36 drop_schema (
database&,
const std::string& name =
"");
44 const std::string& name =
"")
46 migrate_schema_impl (db, v, name, migrate_pre);
52 const std::string& name =
"")
54 migrate_schema_impl (db, v, name, migrate_post);
60 const std::string& name =
"")
62 migrate_schema_impl (db, v, name, migrate_both);
74 const std::string& name =
"");
77 typedef std::function<void (database&)> data_migration_function_type;
79 typedef void (*data_migration_function_type) (
database&);
89 template <schema_version v, schema_version base>
92 const std::string& name =
"")
94 data_migration_function<v, base> (
id_common, f, name);
99 template <schema_version v, schema_version base>
102 data_migration_function_type f,
103 const std::string& name =
"")
105 data_migration_function<v, base> (db.
id (), f, name);
108 template <schema_version v, schema_version base>
111 data_migration_function_type f,
112 const std::string& name =
"")
118 static_assert (v > base || base == 0,
119 "data migration function is no longer necessary");
123 typedef details::meta::static_assert_test<(v > base || base == 0)>
124 data_migration_function_is_no_longer_necessary;
126 char sa [
sizeof (data_migration_function_is_no_longer_necessary)];
127 ODB_POTENTIALLY_UNUSED (sa);
130 data_migration_function (
id, v, f, name);
138 data_migration_function_type f,
139 const std::string& name =
"")
141 data_migration_function (
id_common, v, f, name);
147 data_migration_function_type f,
148 const std::string& name =
"")
150 data_migration_function (db.
id (), v, f, name);
156 data_migration_function_type,
157 const std::string& name =
"");
176 return base_version (db.
id (), name);
180 base_version (
database_id,
const std::string& name =
"");
187 return current_version (db.
id (), name);
191 current_version (
database_id,
const std::string& name =
"");
200 const std::string& name =
"")
208 const std::string& name =
"");
218 return exists (db.
id (), name);
222 exists (
database_id,
const std::string& name =
"");
233 migrate_schema_impl (database&,
235 const std::string& name,
241 template <schema_version v, schema_version base>
248 schema_catalog::data_migration_function<v, base> (f, name);
253 const std::string& name =
"")
255 schema_catalog::data_migration_function<v, base> (id, v, f, name);
268 #endif // ODB_SCHEMA_CATALOG_HXX
Definition: schema-catalog.hxx:27
static void data_migration_function(database &db, data_migration_function_type f, const std::string &name="")
Definition: schema-catalog.hxx:101
Definition: schema-catalog.hxx:242
static schema_version current_version(const database &db, const std::string &name="")
Definition: schema-catalog.hxx:185
void(* data_migration_function_type)(database &)
Definition: schema-catalog.hxx:79
static schema_version next_version(const database &db, schema_version v=0, const std::string &name="")
Definition: schema-catalog.hxx:198
schema_version_type schema_version(const std::string &schema_name="") const
static void migrate_schema(database &db, schema_version v, const std::string &name="")
Definition: schema-catalog.hxx:58
Definition: forward.hxx:81
data_migration_entry(function_type f, const std::string &name="")
Definition: schema-catalog.hxx:246
unsigned long long schema_version
Definition: forward.hxx:30
static bool exists(const database &db, const std::string &name="")
Definition: schema-catalog.hxx:216
Definition: database.hxx:38
static void data_migration_function(database_id id, data_migration_function_type f, const std::string &name="")
Definition: schema-catalog.hxx:110
database_id
Definition: forward.hxx:74
static void migrate_schema_post(database &db, schema_version v, const std::string &name="")
Definition: schema-catalog.hxx:50
static void migrate_schema_pre(database &db, schema_version v, const std::string &name="")
Definition: schema-catalog.hxx:42
static void data_migration_function(data_migration_function_type f, const std::string &name="")
Definition: schema-catalog.hxx:91
static void data_migration_function(schema_version v, data_migration_function_type f, const std::string &name="")
Definition: schema-catalog.hxx:137
static schema_version base_version(const database &db, const std::string &name="")
Definition: schema-catalog.hxx:174
data_migration_entry(database_id id, function_type f, const std::string &name="")
Definition: schema-catalog.hxx:251
static void data_migration_function(database &db, schema_version v, data_migration_function_type f, const std::string &name="")
Definition: schema-catalog.hxx:145
schema_catalog::data_migration_function_type function_type
Definition: schema-catalog.hxx:244