15 ServerSettings(QSettings *settings)
24 QString getDbEngine() const
26 return getParamAndStore("db_engine", getDefaultDbEngine()).toString();
29 QString getDbName() const
31 QString default_db_path(QDir::home().filePath(appName() + ".sqlite"));
32 return getParamAndStore("db", default_db_path).toString();
35 QString getTorrentsDir() const
37 QString default_dir(QDir::home().filePath(QString(".") + appName()));
38 return getParamAndStore("db", default_dir).toString();
44 ServerSettings(ServerSettings const&);
45 ServerSettings& operator= (ServerSettings const&);
47 static inline QString appName()
49 return QCoreApplication::applicationName();
52 static QString getDefaultDbEngine()
54 // for (QStringListIterator p = QSqlDatabase::drivers(); p.hasNext();) {
60 QVariant getParamAndStore(QString const& name, QVariant default_value) const
62 QVariant v(settings_->value(name));
68 settings_->setValue(name, default_value);
72 mutable QSettings *settings_;
79 ServerDb(ServerSettings *settings)
80 : db_(QSqlDatabase::addDatabase(settings->getDbEngine()))
82 QString db_name(settings->getDbName());
83 db_.setDatabaseName(db_name);
87 qDebug() << "cant open db";
90 qDebug() << "opened " << db_name;
93 if (!q.exec("create table torrents (hash varchar primary key, path varchar, savepath varchar);\n"))
95 qDebug() << "cant create table: " << q.lastError().text();
104 void addTorrent(const QString &hash, const QString &path, const QString &save_path)
108 qDebug() << "cant open db";
110 QSqlQuery query_add_;
111 query_add_.prepare("INSERT INTO torrents (hash, path, savepath) VALUES (?, ?, ?)");
112 query_add_.bindValue(0, hash);
113 query_add_.bindValue(1, path);
114 query_add_.bindValue(2, save_path);
115 if (!query_add_.exec())
117 qDebug() << "cant add torrent info into db: "
118 << query_add_.lastError().text();
125 ServerDb(ServerDb const&);
126 ServerDb& operator= (ServerDb const&);
131 } // namespace qtrapids
133 #endif // _SERVERDB_HPP_