File indexing completed on 2024-04-28 05:48:41

0001 /*
0002    SPDX-FileCopyrightText: 2010 Marco Mentasti <marcomentasti@gmail.com>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #pragma once
0008 
0009 class ConnectionModel;
0010 class KConfigGroup;
0011 class QUrl;
0012 
0013 #include "connection.h"
0014 #include <KWallet>
0015 #include <QSqlQuery>
0016 #include <QUrl>
0017 
0018 class SQLManager : public QObject
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     explicit SQLManager(QObject *parent = nullptr);
0024     ~SQLManager() override;
0025 
0026     ConnectionModel *connectionModel();
0027     void createConnection(const Connection &conn);
0028     static bool testConnection(const Connection &conn, QSqlError &error);
0029     bool isValidAndOpen(const QString &connection);
0030 
0031     KWallet::Wallet *openWallet();
0032     int storeCredentials(const Connection &conn);
0033     int readCredentials(const QString &name, QString &password);
0034     static const int K_WALLET_CONNECTION_SUCCESSFUL = 0;
0035     static const int K_WALLET_CONNECTION_ERROR = -1;
0036     static const int K_WALLET_CONNECTION_REJECTED_BY_USER = -2;
0037 
0038 public Q_SLOTS:
0039     void removeConnection(const QString &name);
0040     void reopenConnection(const QString &name);
0041     void loadConnections(const KConfigGroup &connectionsGroup);
0042     void saveConnections(KConfigGroup *connectionsGroup);
0043     void runQuery(const QString &text, const QString &connection);
0044 
0045 protected:
0046     static void saveConnection(KConfigGroup *connectionsGroup, const Connection &conn);
0047 
0048 Q_SIGNALS:
0049     void connectionCreated(const QString &name);
0050     void connectionRemoved(const QString &name);
0051     void connectionAboutToBeClosed(const QString &name);
0052 
0053     void queryActivated(QSqlQuery &query, const QString &connection);
0054 
0055     void error(const QString &message);
0056     void success(const QString &message);
0057 
0058 private:
0059     ConnectionModel *m_model;
0060     KWallet::Wallet *m_wallet = nullptr;
0061 };