changeset 517:fcfd8e28a083

Start making database migration to PostgreSQL work.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 08 Dec 2013 17:27:33 +0200
parents 664915ff8520
children af2f39a1dd79
files createdb.php
diffstat 1 files changed, 36 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/createdb.php	Sun Dec 08 17:08:39 2013 +0200
+++ b/createdb.php	Sun Dec 08 17:27:33 2013 +0200
@@ -185,7 +185,7 @@
   ),
 
   "news" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("utime"        , "INT"),
     array("title"        , "VARCHAR(".SET_LEN_NEWS_TITLE.")"),
     array("text"         , "VARCHAR(".SET_LEN_NEWS_TEXT.")"),
@@ -194,7 +194,7 @@
   ),
 
   "compos" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("name"         , "VARCHAR(".SET_LEN_COMPO_NAME.")"),
     array("description"  , "VARCHAR(".SET_LEN_COMPO_DESC.")"),
     array("visible"      , "INT", "DEFAULT 0"),
@@ -204,7 +204,7 @@
   ),
   
   "entries" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("show_id"      , "INT", "DEFAULT 0"),
     array("name"         , "VARCHAR(".SET_LEN_ENTRY_NAME.")"),
     array("author"       , "VARCHAR(".SET_LEN_ENTRY_AUTHOR.")"),
@@ -215,7 +215,7 @@
   ),
 
   "attendees" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("regtime"      , "INT"),
     array("name"         , "VARCHAR(".SET_LEN_USERNAME.")"),
     array("groups"       , "VARCHAR(".SET_LEN_GROUPS.")"),
@@ -225,13 +225,13 @@
   ),
 
   "votekeys" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("key"          , "VARCHAR(".SET_LEN_VOTEKEY.")"),
     array("active"       , "INT", "DEFAULT 0"),
   ),
 
   "votes" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("entry_id"     , "INT", "DEFAULT NULL"),
     array("key_id"       , "INT", "DEFAULT 0"),
     array("value"        , "INT", "DEFAULT 0"),
@@ -249,18 +249,18 @@
   ),
 
   "displaySlides" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("title"        , "VARCHAR(".SET_LEN_DISP_SLIDE_TITLE.")"),
     array("text"         , "VARCHAR(".SET_LEN_DISP_SLIDE_TEXT.")"),
   ),
 
   "rotationListData" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("name"         , "VARCHAR(".SET_LEN_ROT_LIST_NAME.")"),
   ),
   
   "rotationListSlides" => array(
-    array("id"           , "INTEGER", "PRIMARY KEY AUTOINCREMENT"),
+    array("id"           , "INTEGER", "PRIMARY KEY", "AUTOINCREMENT"),
     array("list_id"      , "INT", "DEFAULT 0"),
     array("slide_id"     , "INT", "DEFAULT 0"),
     array("order_num"    , "INT", "DEFAULT 0"),
@@ -370,12 +370,36 @@
 //
 // Helper functions
 //
-function stGetTableSchema($data)
+function stGetTableSchema($dbh, $data)
 {
   $res = array();
+  $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME);
 
   foreach ($data as $col)
-    $res[] = implode(" ", $col);
+  {
+    $tmp = array();
+
+    switch ($driver)
+    {
+      case "pgsql":
+        foreach ($col as $elem)
+        {
+          if ($elem != "AUTOINCREMENT")
+            $tmp[] = $elem;
+        }
+        break;
+      
+      case "sqlite":
+      case "mysql":
+        $tmp = $col;
+        break
+      
+      default:
+        die("Don't know how to handle PDO driver '".$driver."' yet.\n");
+    }
+
+    $res[] = implode(" ", $tmp);
+  }
 
   return implode(", ", $res);
 }
@@ -394,7 +418,7 @@
   foreach ($sqlTables as $name => $schemaData)
   {
     echo " - '".$name."'\n";
-    if (!stCreateOneTable($dbh, $name, stGetTableSchema($schemaData)) && !$upgrade)
+    if (!stCreateOneTable($dbh, $name, stGetTableSchema($dbh, $schemaData)) && !$upgrade)
       return FALSE;
   }
   return TRUE;