|  | @@ -0,0 +1,194 @@
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + *openPilot Log - A FOSS Pilot Logbook Application
 | 
	
		
			
				|  |  | + *Copyright (C) 2020  Felix Turowsky
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *This program 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.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#include "dbsetup.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/// db connection for debugging
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void dbSetup::connect()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    const QString DRIVER("QSQLITE");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if(QSqlDatabase::isDriverAvailable(DRIVER))
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        QSqlDatabase db = QSqlDatabase::addDatabase(DRIVER);
 | 
	
		
			
				|  |  | +        db.setDatabaseName("aaadebug.db");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(!db.open())
 | 
	
		
			
				|  |  | +            qWarning() << "DatabaseConnect - ERROR: " << db.lastError().text();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseConnect - ERROR: no driver " << DRIVER << " available";
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTablePilots = "CREATE TABLE pilots ( "
 | 
	
		
			
				|  |  | +                            "pilot_id       INTEGER, "
 | 
	
		
			
				|  |  | +                            "picfirstname	TEXT, "
 | 
	
		
			
				|  |  | +                            "piclastname	TEXT NOT NULL, "
 | 
	
		
			
				|  |  | +                            "alias          TEXT, "
 | 
	
		
			
				|  |  | +                            "phone          TEXT, "
 | 
	
		
			
				|  |  | +                            "email          TEXT, "
 | 
	
		
			
				|  |  | +                            "rostername     TEXT, "
 | 
	
		
			
				|  |  | +                            "PRIMARY KEY(pilot_id) "
 | 
	
		
			
				|  |  | +                            ")";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTableAircraft = "CREATE TABLE aircraft ( "
 | 
	
		
			
				|  |  | +                             "aircraft_id	integer, "
 | 
	
		
			
				|  |  | +                             "make		TEXT, "
 | 
	
		
			
				|  |  | +                             "model		TEXT, "
 | 
	
		
			
				|  |  | +                             "variant	text, "
 | 
	
		
			
				|  |  | +                             "name		TEXT, "
 | 
	
		
			
				|  |  | +                             "iata		TEXT, "
 | 
	
		
			
				|  |  | +                             "icao		TEXT, "
 | 
	
		
			
				|  |  | +                             "singlepilot	INTEGER, "
 | 
	
		
			
				|  |  | +                             "multipilot	INTEGER, "
 | 
	
		
			
				|  |  | +                             "singleengine	INTEGER, "
 | 
	
		
			
				|  |  | +                             "multiengine	INTEGER, "
 | 
	
		
			
				|  |  | +                             "turboprop	INTEGER, "
 | 
	
		
			
				|  |  | +                             "jet		INTEGER, "
 | 
	
		
			
				|  |  | +                             "heavy		INTEGER, "
 | 
	
		
			
				|  |  | +                             "PRIMARY KEY(aircraft_id) "
 | 
	
		
			
				|  |  | +                             ") ";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTableTails = "CREATE TABLE tails ( "
 | 
	
		
			
				|  |  | +                             "tail_id       INTEGER, "
 | 
	
		
			
				|  |  | +                             "registration	TEXT NOT NULL, "
 | 
	
		
			
				|  |  | +                             "aircraft_id	INTEGER NOT NULL, "
 | 
	
		
			
				|  |  | +                             "company       TEXT, "
 | 
	
		
			
				|  |  | +                             "PRIMARY KEY(tail_id), "
 | 
	
		
			
				|  |  | +                             "FOREIGN KEY(aircraft_id) REFERENCES aircraft(aircraft_id) "
 | 
	
		
			
				|  |  | +                             ")";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTableFlights = "CREATE TABLE flights  ( "
 | 
	
		
			
				|  |  | +                             "id	INTEGER, "
 | 
	
		
			
				|  |  | +                             "doft	NUMERIC NOT NULL, "
 | 
	
		
			
				|  |  | +                             "dept	TEXT    NOT NULL, "
 | 
	
		
			
				|  |  | +                             "tofb	INTEGER NOT NULL, "
 | 
	
		
			
				|  |  | +                             "dest	TEXT    NOT NULL, "
 | 
	
		
			
				|  |  | +                             "tonb	INTEGER NOT NULL, "
 | 
	
		
			
				|  |  | +                             "tblk	INTEGER NOT NULL, "
 | 
	
		
			
				|  |  | +                             "pic	INTEGER, "
 | 
	
		
			
				|  |  | +                             "acft	INTEGER, "
 | 
	
		
			
				|  |  | +                             "PRIMARY KEY(id), "
 | 
	
		
			
				|  |  | +                             "FOREIGN KEY(pic)  REFERENCES pilots(pilot_id), "
 | 
	
		
			
				|  |  | +                             "FOREIGN KEY(acft) REFERENCES tails(tail_id) "
 | 
	
		
			
				|  |  | +                             ")";
 | 
	
		
			
				|  |  | +//extras table might eventually be merged into flights table.
 | 
	
		
			
				|  |  | +const QString createTableExtras = "CREATE TABLE extras ( "
 | 
	
		
			
				|  |  | +                            "extras_id      INTEGER NOT NULL, "
 | 
	
		
			
				|  |  | +                            "PilotFlying	INTEGER, "
 | 
	
		
			
				|  |  | +                            "TOday          INTEGER, "
 | 
	
		
			
				|  |  | +                            "TOnight        INTEGER, "
 | 
	
		
			
				|  |  | +                            "LDGday         INTEGER, "
 | 
	
		
			
				|  |  | +                            "LDGnight       INTEGER, "
 | 
	
		
			
				|  |  | +                            "autoland       INTEGER, "
 | 
	
		
			
				|  |  | +                            "tSPSE          INTEGER, "
 | 
	
		
			
				|  |  | +                            "tSPME          INTEGER, "
 | 
	
		
			
				|  |  | +                            "tMPME          INTEGER, "
 | 
	
		
			
				|  |  | +                            "tNight         INTEGER, "
 | 
	
		
			
				|  |  | +                            "tIFR           INTEGER, "
 | 
	
		
			
				|  |  | +                            "tPIC           INTEGER, "
 | 
	
		
			
				|  |  | +                            "tSIC           INTEGER, "
 | 
	
		
			
				|  |  | +                            "tDual          INTEGER, "
 | 
	
		
			
				|  |  | +                            "tInstructor	INTEGER, "
 | 
	
		
			
				|  |  | +                            "tSIM           INTEGER, "
 | 
	
		
			
				|  |  | +                            "ApproachType	TEXT, "
 | 
	
		
			
				|  |  | +                            "FlightNumber	TEXT, "
 | 
	
		
			
				|  |  | +                            "Remarks        TEXT, "
 | 
	
		
			
				|  |  | +                            "PRIMARY KEY(extras_id) "
 | 
	
		
			
				|  |  | +                            ")";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTableAirports = "CREATE TABLE airports( "
 | 
	
		
			
				|  |  | +                            "airport_id INTEGER primary key, "
 | 
	
		
			
				|  |  | +                            "icao       TEXT NOT NULL, "
 | 
	
		
			
				|  |  | +                            "iata       TEXT, "
 | 
	
		
			
				|  |  | +                            "name       TEXT, "
 | 
	
		
			
				|  |  | +                            "lat        REAL, "
 | 
	
		
			
				|  |  | +                            "long       REAL, "
 | 
	
		
			
				|  |  | +                            "country    TEXT,  "
 | 
	
		
			
				|  |  | +                            "alt        INTEGER, "
 | 
	
		
			
				|  |  | +                            "utcoffset  INTEGER,  "
 | 
	
		
			
				|  |  | +                            "tzolson    TEXT "
 | 
	
		
			
				|  |  | +                            ")";
 | 
	
		
			
				|  |  | +const QString createTableScratchpad = "CREATE TABLE scratchpad ( "
 | 
	
		
			
				|  |  | +                            "id     INTEGER, "
 | 
	
		
			
				|  |  | +                            "doft	NUMERIC, "
 | 
	
		
			
				|  |  | +                            "dept	TEXT, "
 | 
	
		
			
				|  |  | +                            "tofb	INTEGER, "
 | 
	
		
			
				|  |  | +                            "dest	TEXT, "
 | 
	
		
			
				|  |  | +                            "tonb	INTEGER, "
 | 
	
		
			
				|  |  | +                            "tblk	INTEGER, "
 | 
	
		
			
				|  |  | +                            "pic	INTEGER, "
 | 
	
		
			
				|  |  | +                            "acft	INTEGER, "
 | 
	
		
			
				|  |  | +                            "PRIMARY KEY(id) "
 | 
	
		
			
				|  |  | +                            ") ";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const QString createTableSettings = "CREATE TABLE settings ( "
 | 
	
		
			
				|  |  | +                             "setting_id	INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
 | 
	
		
			
				|  |  | +                             "setting       TEXT, "
 | 
	
		
			
				|  |  | +                             "description	TEXT "
 | 
	
		
			
				|  |  | +                             ")";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void dbSetup::createTables()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QSqlQuery query;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTablePilots);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTableAircraft);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTableTails);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTableFlights);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTableExtras);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare(createTableAirports);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +    query.prepare(createTableScratchpad);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +    query.prepare(createTableSettings);
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    if(!query.isActive())
 | 
	
		
			
				|  |  | +        qWarning() << "DatabaseInit - ERROR: " << query.lastError().text();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    query.prepare("SELECT name FROM sqlite_master WHERE type='table'");
 | 
	
		
			
				|  |  | +    query.exec();
 | 
	
		
			
				|  |  | +    while (query.next()) {
 | 
	
		
			
				|  |  | +        qDebug() << "Table: " << query.value(0).toString();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |