diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | odb/context.cxx | 23 | ||||
-rw-r--r-- | odb/options.cli | 10 |
3 files changed, 32 insertions, 5 deletions
@@ -21,6 +21,10 @@ Version 1.6.0 For more information, refer to chapters 11 (for MySQL), 12 (for SQLite) and 13 (for PostgreSQL) in the ODB manual. + * New option, --table-prefix, allows the specification of a prefix that + is added to table and index names. For more information, refer to the + ODB compiler command line interface documentation (man pages). + Version 1.5.0 * Support for the PostgreSQL database. The provided connection factories diff --git a/odb/context.cxx b/odb/context.cxx index 0280c28..68e3f65 100644 --- a/odb/context.cxx +++ b/odb/context.cxx @@ -359,25 +359,38 @@ comp_value_ (semantics::class_& c) string context:: table_name (semantics::class_& t) const { + string name (options.table_prefix ()); + if (t.count ("table")) - return t.get<string> ("table"); + name += t.get<string> ("table"); else - return t.name (); + name += t.name (); + + return name; } string context:: table_name (semantics::data_member& m, table_prefix const& p) const { + string name (options.table_prefix ()); + // If a custom table name was specified, then ignore the top-level // table prefix. // if (m.count ("table")) { - string const& name (m.get<string> ("table")); - return p.level == 1 ? name : p.prefix + name; + if (p.level != 1) + name += p.prefix; + + name += m.get<string> ("table"); + } + else + { + name += p.prefix; + name += public_name_db (m); } - return p.prefix + public_name_db (m); + return name; } string context:: diff --git a/odb/options.cli b/odb/options.cli index 34c35a6..65c9873 100644 --- a/odb/options.cli +++ b/odb/options.cli @@ -142,6 +142,16 @@ class options profile." }; + std::string --table-prefix + { + "<prefix>", + "Add <prefix> to table and index names. The prefix is added to both + names that were specified with the \cb{db table} pragma and those + that were automatically derived from class names. If you require a + separator, such as an underscore, between the prefix and the name, + then you should include it into the prefix value." + }; + std::string --output-dir | -o { "<dir>", |