#ifndef SDBMANAGER
#define SDBMANAGER
#include <QMap>
class QSqlDatabase;
class QSqlQuery;
class QString;
class QStringList;
class QSqlError;

class SDBManager
{
public:
    enum E_DATABASE{ E_DATABASE_DATA, E_DATABASE_WEB };
    QSqlDatabase getDBConnection(const QString& _dbName) const;
    QSqlDatabase getDBConnection(const E_DATABASE& _eDatabase) const;
    bool open(const QString& _dbName);
    bool open(const E_DATABASE& _eDatabase);
    void close(const QString& _dbName);
    void close(const E_DATABASE& _eDatabase);
    void close();
    void addDatabase(const QString& _dbName, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
    void addDatabase(const QString& _dbName, const E_DATABASE& _eDatabase, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306);
    QSqlQuery sqlQuery(const QString& _dbName);
    QSqlQuery sqlQuery(const E_DATABASE& _eDatabase);
    bool reOpen(const QString& _dbName);
    bool reOpen(const E_DATABASE& _eDatabase);
    bool isConnectionError(const QSqlError& _error);
    QSqlDatabase operator[](const QString& _dbName) const;
    QSqlDatabase operator[](const E_DATABASE& _eDatabase) const;
    virtual ~SDBManager();
private:
    QMap<E_DATABASE, QString> m_mapDBname;
};


#endif // SDBMANAGER

