Imported needed functionality from (soon) deprecated database
[emufront] / src / db / dbcreator.cpp
index 2ffca2c..a3b249d 100644 (file)
@@ -1,22 +1,23 @@
-// EmuFront
-// Copyright 2010 Mikko Keinänen
-//
-// This file is part of EmuFront.
-//
-//
-// EmuFront is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2 as published by
-// the Free Software Foundation and appearing in the file gpl.txt included in the
-// packaging of this file.
-//
-// EmuFront is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
-
+/*
+** EmuFront
+** Copyright 2010 Mikko Keinänen
+**
+** This file is part of EmuFront.
+**
+**
+** EmuFront is free software: you can redistribute it and/or modify
+** it under the terms of the GNU General Public License version 2 as published by
+** the Free Software Foundation and appearing in the file gpl.txt included in the
+** packaging of this file.
+**
+** EmuFront is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
+*/
 #include <QObject>
 #include <QDir>
 #include <QSqlDatabase>
@@ -27,7 +28,7 @@
 #include <QDebug>
 #include <exception>
 #include "dbcreator.h"
-
+#include "emufrontexception.h"
 
 using namespace std;
 
@@ -47,6 +48,24 @@ bool DbCreator::createDB()
 
     try
     {
+
+        /*
+
+            N O T I C E
+            -----------
+
+            When adding a new table, remember to add a drop table
+            clause also!
+
+            When changing the database structure, increase
+            also the version number and create a sql command
+            for updating from last version to new version.
+
+            Update those version upgrade "patches" here as a version history:
+            -----------------------------------------------------------------
+
+        */
+
         query.exec("DROP TABLE IF EXISTS mediaimagecontainer_mediaimage");
         query.exec("DROP TABLE IF EXISTS mediaimagecontainer_filepath");
         query.exec("DROP TABLE IF EXISTS filepath");
@@ -75,7 +94,16 @@ bool DbCreator::createDB()
 
         if (!ret) throw QString("tbl config");
 
-        ret = query.exec("CREATE TABLE IF NOT EXISTS file"
+        ret = query.exec(
+            "CREATE TABLE IF NOT EXISTS titlename "
+            "(id INTEGER PRIMARY KEY, "
+            " name TEXT)"
+            // TODO: more fields here...
+        );
+
+        if (!ret) throw QString("tbl titlename");
+
+        ret = query.exec("CREATE TABLE IF NOT EXISTS file "
                         "(id INTEGER PRIMARY KEY, "
                         "name TEXT, "
                         "type INTEGER, "
@@ -86,6 +114,12 @@ bool DbCreator::createDB()
 
         if (!ret) throw QString("tbl file");
 
+        ret = query.exec(
+            "CREATE TABLE IF NOT EXISTS file titlename_file "
+            "(titlenameid INTEGER REFERENCES titlename(id), "
+            "fileid INTEGER REFERENCES file(id))"
+        );
+
         qDebug() << "Creating TABLE platform";
 
         ret = query.exec("CREATE TABLE IF NOT EXISTS platform "
@@ -221,7 +255,7 @@ bool DbCreator::createDB()
     catch (QString tbl)
     {
         QString err = query.lastError().text();
-        throw QString("Couldn't CREATE '%1'!").arg(tbl).append(err);
+        throw EmuFrontException(QString("Couldn't CREATE '%1'!").arg(tbl).append(err));
     }
     return ret;
 }