//
//
// EmuFront is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// 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
using namespace std;
const int DbCreator::TABLES_COUNT = 3;
-const QString DbCreator::TABLES[] = {"platform", "mediatype", "filepath", "mediaimagecontainer", "mediaimage", "mediaimagecontainer_mediaimage"};
+const QString DbCreator::TABLES[] = {"platform", "mediatype", "filepath", "mediaimagecontainer_filepath", "mediaimage", "mediaimagecontainer_mediaimage"};
DbCreator::DbCreator(QObject *parent) : QObject(parent)
{
try
{
- query.exec("DROP TABLE IF EXISTS mediaimagecontainer_file");
- query.exec("DROP TABLE IF EXISTS mediaimagecontainer");
+ query.exec("DROP TABLE IF EXISTS mediaimagecontainer_mediaimage");
+ query.exec("DROP TABLE IF EXISTS mediaimagecontainer_filepath");
query.exec("DROP TABLE IF EXISTS filepath");
query.exec("DROP TABLE IF EXISTS setup");
query.exec("DROP TABLE IF EXISTS mediatype");
qDebug() << "Creating TABLE file";
+ ret = query.exec("CREATE TABLE IF NOT EXISTS config"
+ "(tmpdirpath TEXT)"
+ );
+
ret = query.exec("CREATE TABLE IF NOT EXISTS file"
"(id INTEGER PRIMARY KEY, "
"name TEXT, "
"size INTEGER, "
"updatetime NUMERIC)");
+ if (!ret) throw QString("tbl file");
+
qDebug() << "Creating TABLE platform";
ret = query.exec("CREATE TABLE IF NOT EXISTS platform "
"name TEXT, "
"fileid INTEGER REFERENCES file(id))");
- if (!ret) throw QString("platform.");
+ if (!ret) throw QString("tbl platform");
qDebug() << "Creating TABLE mediatype ";
"name TEXT, "
"fileid INTEGER REFERENCES file(id))");
- if (!ret) throw QString("mediatype.");
+ if (!ret) throw QString("tbl mediatype");
qDebug() << "Creating TABLE setup";
"mediatypeid INTEGER REFERENCES mediatype(id) ON DELETE CASCADE, "
"filetypeextensions TEXT)");
+ if (!ret) throw QString("tbl setup");
+
qDebug() << "Creating table executable";
ret = query.exec("CREATE TABLE IF NOT EXISTS executable "
"(id INTEGER PRIMARY KEY, "
"name TEXT, "
+ "executable TEXT, "
"options TEXT, "
"type INTEGER, "
"setupid INTEGER REFERENCES setup(id))");
- /*qDebug() << "Creating TABLE filetype";
- ret = query.exec("CREATE TABLE filetype IF NOT EXISTS"
- "(id INTEGER PRIMARY KEY, "
- "name TEXT)");
- if (!ret) throw QString("filetype.");
- query.exec("insert into filetype (id, name) values (1, 'media image container')");
- query.exec("insert into filetype (id, name) values (2, 'screenshot')");
- query.exec("insert into filetype (id, name) values (3, 'platform icon')");
- query.exec("insert into filetype (id, name) values (4, 'media type icon')");*/
+ if (!ret) throw QString("tbl executable");
qDebug() << "Creating TABLE filepath";
"lastscanned NUMERIC, "
"FOREIGN KEY (setupid) REFERENCES setup(id))");
- if (!ret) throw QString("filepath");
+ if (!ret) throw QString("tbl filepath");
- qDebug() << "Creating TABLE mediaimagecontainer";
+ qDebug() << "Creating TABLE mediaimagecontainer_filepath";
- ret = query.exec("CREATE TABLE IF NOT EXISTS mediaimagecontainer "
+ ret = query.exec("CREATE TABLE IF NOT EXISTS mediaimagecontainer_filepath "
"(fileid INTEGER REFERENCES file(id), "
"filepathid INTEGER REFERENCES filepath(id), "
"updatetime NUMERIC)");
- if (!ret) throw QString("mediaimagecontainer");
+ if (!ret) throw QString("tbl mediaimagecontainer_filepath");
qDebug() << "Creating TABLE mediaimagecontainer_mediaimage";
"(mediaimagecontainerid INTEGER REFERENCES file(id), "
"mediaimageid INTEGER REFERENCES file(id))");
- if (!ret) throw QString("mediaimagecontainer_mediaimage");
+ if (!ret) throw QString("tbl mediaimagecontainer_mediaimage");
query.exec(
"CREATE TRIGGER IF NOT EXISTS trg_onplatformdelete "
"END;"
);
+ if (!ret) throw QString("trg_onplatformdelete");
+
query.exec(
"CREATE TRIGGER IF NOT EXISTS trg_onmediatypedelete "
"AFTER DELETE ON mediatype "
"END;"
);
+ if (!ret) throw QString("trg_onmediatypedelete");
+
query.exec(
"CREATE TRIGGER IF NOT EXISTS trg_onsetupdelete "
"AFTER DELETE ON setup "
"BEGIN "
- " DELETE FROM filepath WHERE filepath.setupid = old.id;"
+ " DELETE FROM filepath WHERE filepath.setupid = old.id; "
+ " DELETE FROM executable WHERE executable.setupid = old.id; "
"END;"
);
+
+ if (!ret) throw QString("trg_onsetupdelete");
+
query.exec(
- "CREATE TRIGGER IF NOT EXISTS trg_onfiledelete "
- "AFTER DELETE ON file "
+ "CREATE TRIGGER IF NOT EXISTS trg_onfilepathdelete "
+ "AFTER DELETE ON filepath "
"BEGIN "
- " UPDATE platform SET platform.inconfileid=NULL WHERE platform.iconfileid = old.id;"
- " UPDATE mediatype SET mediatype.iconfileid=NULL WHERE mediatype.iconfileid = old.id;"
- " DELETE FROM mediaimagecontainer_mediaimage WHERE mediaimagecontainer_mediaimage.fileid = old.id;"
+ " DELETE FROM mediaimagecontainer_filepath WHERE mediaimagecontainer_filepath.filepathid=old.id; "
"END;"
);
+
+ if (!ret) throw QString("trg_onfilepathdelete");
+
+ query.exec(
+ "CREATE TRIGGER IF NOT EXISTS trg_onmediaimagecontainerdelete "
+ "AFTER DELETE ON mediaimagecontainer_filepath "
+ "BEGIN "
+ " DELETE FROM mediaimagecontainer_mediaimage WHERE mediaimagecontainer_mediaimage.mediaimagecontainerid=old.fileid;"
+ "END;"
+ );
+
+ if (!ret) throw QString("trg_onmediaimagecontainerdelete");
+
+ query.exec(
+ "CREATE TRIGGER IF NOT EXISTS trg_onmediaimagecontainer_mediaimagedelete "
+ "AFTER DELETE ON mediaimagecontainer_mediaimage "
+ "BEGIN "
+ " DELETE FROM file WHERE file.id=old.mediaimageid; "
+ " DELETE FROM file WHERE file.id=old.mediaimagecontainerid; "
+ "END;"
+ );
+ if (!ret) throw QString("trg_onmediaimagecontainer_mediaimagedelete");
+
}
catch (QString tbl)
{
QString err = query.lastError().text();
- throw QString("Couldn't CREATE table '%1'!").arg(tbl).append(err);
+ throw QString("Couldn't CREATE '%1'!").arg(tbl).append(err);
}
return ret;
}