diff options
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r-- | seriestreemodel.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index d5257bb..4ff34e0 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -34,6 +34,8 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree mSeriesFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id"); mSeriesPartFilesQuery = new QSqlQuery(mDb); mSeriesPartFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM seriesparts, files WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseriesparts_id = files.iseriespart_id"); + mSeriesPartInsertQuery = new QSqlQuery(mDb); + mSeriesPartInsertQuery->prepare("INSERT INTO seriesparts(iseriespart, iseries_id) VALUES(:part, :id)"); mSortedMovieListQuery = new QSqlQuery(mDb); mSortedMovieListQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.sifiletype = 1 ORDER BY seriesparts.iseriespart, files.sifileno"); mNextDvdNoQuery = new QSqlQuery(mDb); @@ -49,6 +51,9 @@ SeriesTreeModel::~SeriesTreeModel(){ delete mSeriesInsertQuery; delete mSeriesFilesQuery; delete mSeriesPartFilesQuery; + delete mSeriesPartInsertQuery; + delete mSortedMovieListQuery; + delete mNextDvdNoQuery; mDb.close(); mDb = QSqlDatabase(); } @@ -264,6 +269,53 @@ bool SeriesTreeModel::deleteFromSeries(const QModelIndex &what){ return false; } +bool SeriesTreeModel::addSeries(const QVariant &seriesName, const QModelIndex &parent){ + const QString name = seriesName.toString().toLower().trimmed(); + if(name.isEmpty()){ + return false; + } + mDb.transaction(); + mSeriesInsertQuery->bindValue(":name", name); + if(mSeriesInsertQuery->exec()){ + QSqlQuery lastId("SELECT currval('series_iseries_id__seq')", mDb); + if(lastId.next()){ + int id = lastId.value(0).toInt(); + QList<QVariant> seriesData; + seriesData << name << id << QVariant() << QVariant() << Series; + if(addRow(seriesData, parent)){ + mDb.commit(); + return true; + } + } + } + mDb.rollback(); + return false; +} + +bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent){ + if(!parent.isValid() || parent.data(TypeRole) != Series){ + return false; + } + int seriesId = parent.data(SeriesIdRole).toInt(); + mDb.transaction(); + mSeriesPartInsertQuery->bindValue(":part", seriesPart); + mSeriesPartInsertQuery->bindValue(":id", seriesId); + if(mSeriesPartInsertQuery->exec()){ + QSqlQuery lastId("SELECT currval('seriesparts_seriesparts_id__seq')", mDb); + if(lastId.exec()){ + int id = lastId.value(0).toInt(); + QList<QVariant> partData; + partData << parent.data(NameRole) << seriesId << id << seriesPart << Part; + if(addRow(partData, parent)){ + mDb.commit(); + return true; + } + } + } + mDb.rollback(); + return false; +} + void SeriesTreeModel::populate(){ QSqlQuery seriesQuery = QSqlQuery("SELECT iseries_id, tseries_name FROM series ORDER BY tseries_name", mDb); SmTreeItem *rootItem = new SmTreeItem(5); |