15 ServerSettings(QSettings *settings)
16 : settings_(settings) { }
22 QString getDbEngine() const {
23 return getParamAndStore("db_engine", getDefaultDbEngine()).toString();
26 QString getDbName() const {
27 QString default_db_path(QDir::home().filePath(appName() + ".sqlite"));
28 return getParamAndStore("db", default_db_path).toString();
31 QString getTorrentsDir() const {
32 QString default_dir(QDir::home().filePath(QString(".") + appName()));
33 return getParamAndStore("db", default_dir).toString();
39 ServerSettings(ServerSettings const&);
40 ServerSettings& operator= (ServerSettings const&);
42 static inline QString appName() {
43 return QCoreApplication::applicationName();
46 static QString getDefaultDbEngine() {
47 // for (QStringListIterator p = QSqlDatabase::drivers(); p.hasNext();) {
53 QVariant getParamAndStore(QString const& name, QVariant default_value) const {
54 QVariant v(settings_->value(name));
59 settings_->setValue(name, default_value);
63 mutable QSettings *settings_;
70 ServerDb(ServerSettings *settings)
71 : db_(QSqlDatabase::addDatabase(settings->getDbEngine())) {
72 QString db_name(settings->getDbName());
73 db_.setDatabaseName(db_name);
76 qDebug() << "cant open db";
79 qDebug() << "opened " << db_name;
82 if (!q.exec("create table torrents (hash varchar primary key, path varchar, savepath varchar);\n")) {
83 qDebug() << "cant create table: " << q.lastError().text();
91 void addTorrent(const QString &hash, const QString &path, const QString &save_path) {
93 qDebug() << "cant open db";
96 query_add_.prepare("INSERT INTO torrents (hash, path, savepath) VALUES (?, ?, ?)");
97 query_add_.bindValue(0, hash);
98 query_add_.bindValue(1, path);
99 query_add_.bindValue(2, save_path);
100 if (!query_add_.exec()) {
101 qDebug() << "cant add torrent info into db: "
102 << query_add_.lastError().text();
109 ServerDb(ServerDb const&);
110 ServerDb& operator= (ServerDb const&);
115 } // namespace qtrapids
117 #endif // _SERVERDB_HPP_