Cleaned up a bit after reorginizing db functionality.
[emufront] / src / db / databasemanager.cpp
1 // EmuFront
2 // Copyright 2010 Mikko Keinänen
3 //
4 // This file is part of EmuFront.
5 //
6 //
7 // EmuFront is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // Foobar is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
19
20 #include "databasemanager.h"
21 #include <QObject>
22 #include <QSqlDatabase>
23 #include <QSqlTableModel>
24 #include <QSqlError>
25 #include <QSqlQuery>
26 #include <QFile>
27 #include <QDir>
28 #include <QVariant>
29 #include <iostream>
30
31 const QString DatabaseManager::DB_FILENAME = QString("my.db.sqlite");
32
33 DatabaseManager::DatabaseManager(QObject *parent)
34         : QObject(parent)
35 {}
36
37 DatabaseManager::~DatabaseManager()
38 {
39     // no need to explicitily destroy sqlTableModel
40     // because it is parented QObject and will
41     // be destroyed when parent is destroyed
42 }
43
44 bool DatabaseManager::openDB()
45 {
46     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
47     db.setDatabaseName(DatabaseManager::getDbPath());
48     return db.open();
49 }
50
51 bool DatabaseManager::deleteDB()
52 {
53     // return QFile::remove(getDbPath());
54     return false;
55 }
56
57 QString DatabaseManager::getDbPath()
58 {
59         QString path;
60 #ifdef Q_OS_LINUX
61         path.append(QDir::home().path());
62         path.append(QDir::separator()).append(DB_FILENAME);
63 #else
64         path.append(DB_FILENAME);       
65 #endif
66         return path;
67 }
68
69 /**
70  * Check if database already exists.
71  * Returns false if doesn't or we don't have a connection.
72 */ 
73 bool DatabaseManager::dbExists()
74 {
75         QSqlQuery query;
76     query.exec("SELECT name FROM sqlite_master WHERE name='platform'");
77     return query.next();
78 }
79
80 bool DatabaseManager::createDB()
81 {
82         bool ret = false;
83     QSqlQuery query;
84
85     ret = query.exec("create table platform "
86                      "(id integer primary key, "
87                      "name varchar(30), "
88                      "filename varchar(125))");
89     /*ret = query.exec("create table media "
90                                                 "(id integer primary key, "
91                                                 "name varchar(30), "
92                                                 "filename varchar(125))");*/
93         return ret;
94 }
95
96 void DatabaseManager::resetModel() const
97 {
98     if (!sqlTableModel) return;
99     sqlTableModel->setFilter("");
100     sqlTableModel->select();
101 }