Skip to content
Snippets Groups Projects
Select Git revision
  • a7e3fb508eb15ac0dd53e53ebed75e86542c1fef
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/releaseTest
  • release/releaseWindowsTest
  • release/windowsReleaseTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 1.0.0
  • 0.3.0
  • 0.2.1
  • 0.2.0
  • 0.1.0
26 results

database.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    database.cpp 24.07 KiB
    /****************************************************************************
     *   Copyright (C) 2017 Savoir-faire Linux                                  *
     *   Author: Nicolas Jäger <nicolas.jager@savoirfairelinux.com>             *
     *   Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>           *
     *   Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>       *
     *                                                                          *
     *   This library is free software; you can redistribute it and/or          *
     *   modify it under the terms of the GNU Lesser General Public             *
     *   License as published by the Free Software Foundation; either           *
     *   version 2.1 of the License, or (at your option) any later version.     *
     *                                                                          *
     *   This library 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      *
     *   Lesser 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 <http://www.gnu.org/licenses/>.  *
     ***************************************************************************/
    #include "database.h"
    
    // Qt
    #include <QtCore/QDir>
    #include <QtCore/QDebug>
    #include <QtCore/QFile>
    #include <QtCore/QJsonArray>
    #include <QtCore/QJsonDocument>
    #include <QtCore/QJsonObject>
    #include <QtSql/QSqlDatabase>
    #include <QtSql/QSqlError>
    #include <QtSql/QSqlRecord>
    #include <QtCore/QStandardPaths>
    #include <QtCore/QVariant>
    #include <QDir>
    
    // Std
    #include <sstream>
    
    // Data
    #include "api/interaction.h"
    
    // Lrc for migrations
    #include "person.h"
    #include "account.h"
    #include "accountmodel.h"
    #include "private/vcardutils.h"
    
    namespace lrc
    {
    
    using namespace api;
    
    static constexpr auto VERSION = "1";
    static constexpr auto NAME = "ring.db";
    
    Database::Database()
    : QObject()
    {
        if (not QSqlDatabase::drivers().contains("QSQLITE")) {
            throw std::runtime_error("QSQLITE not supported");
        }
    
        {
            // create data directory if not created yet
            QDir dataDir;
            dataDir.mkpath(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
        }
    
        // initalize the database.
        db_ = QSqlDatabase::addDatabase("QSQLITE");