Add support for optional db.namePrefix setting
authorDavid Mudrák <david@moodle.com>
Fri, 27 Jun 2014 12:38:11 +0000 (14:38 +0200)
committerDavid Mudrák <david@moodle.com>
Fri, 4 Jul 2014 12:08:32 +0000 (14:08 +0200)
Currently, the default database name is the same as the Moodle instance's name.
This is suboptimal for development setups where the database engine is used for
other projects as well (Moodle developer can easily have Mahara or Mediawiki
databases present as well, for example).

I believe it's a good idea to make it clear that certain database is under
mdk's control. Having a prefix (such as `mdk_`) seems to work well.

config-dist.json
lib/commands/create.py
lib/moodle.py

index 99ad039..1412ea4 100644 (file)
@@ -33,6 +33,8 @@
 
     // Database access
     "db": {
+        // Name prefix for all databases created by mdk. Affects the database name only, not the tables.
+        "namePrefix": "",
         "mysqli": {
             "host": "localhost",
             "port": "3306",
index ec668fd..259e638 100644 (file)
@@ -183,6 +183,10 @@ class CreateCommand(Command):
 
             # Checking database
             dbname = re.sub(r'[^a-zA-Z0-9]', '', name).lower()[:28]
+            prefixDbname = self.C.get('db.namePrefix')
+            if prefixDbname == None:
+                prefixDbname = '';
+            dbname = prefixDbname + dbname
             db = DB(engine, self.C.get('db.%s' % engine))
             dropDb = False
             if db.dbexists(dbname):
index 3d5da43..f82ff79 100644 (file)
@@ -384,6 +384,10 @@ class Moodle(object):
             raise InstallException('Cannot install instance without knowing where the data directory is')
         if dbname == None:
             dbname = re.sub(r'[^a-zA-Z0-9]', '', self.identifier).lower()[:28]
+            prefixDbname = C.get('db.namePrefix')
+            if prefixDbname == None:
+                prefixDbname = '';
+            dbname = prefixDbname + dbname
         if engine == None:
             engine = C.get('defaultEngine')
         if fullname == None: