d->db.driver()->subscribeToNotification("episode_insert");
d->db.driver()->subscribeToNotification("file_insert");
d->db.driver()->subscribeToNotification("file_location_insert");
+ d->db.driver()->subscribeToNotification("file_location_delete");
}
OpenFileData Database::readOpenFileData(QSqlQuery &q)
if (locationId)
emit fileLocationInsert(locationId, fid);
}
+ else if (name == "file_location_delete")
+ {
+ QStringList ids = payload.toString().split(QChar(','), QString::SkipEmptyParts);
+ int locationId = 0;
+ int fid = 0;
+
+ if (ids.count())
+ locationId = ids.takeFirst().toInt();
+ if (ids.count())
+ fid = ids.takeFirst().toInt();
+
+ if (locationId)
+ emit fileLocationDelete(locationId, fid);
+ }
#endif
}
void fileInsert(int fid, int eid, int aid);
void fileLocationInsert(int locationId, int fid);
+ void fileLocationDelete(int locationId, int fid);
+
private slots:
// moc doesn't expand macros
// QT_VERSION_CHECK(5, 0, 0) == 0x050000
connect(MyList::instance()->database(), SIGNAL(episodeInsert(int,int)), this, SLOT(episodeInsert(int,int)));
connect(MyList::instance()->database(), SIGNAL(fileInsert(int,int,int)), this, SLOT(fileInsert(int,int,int)));
connect(MyList::instance()->database(), SIGNAL(fileLocationInsert(int,int)), this, SLOT(fileLocationInsert(int,int)));
+
+ connect(MyList::instance()->database(), SIGNAL(fileLocationDelete(int,int)), this, SLOT(fileLocationDelete(int,int)));
}
MyListModel::~MyListModel()
void MyListModel::removeFileLocation(int id)
{
- auto it = fileLocationSet.find(id);
-
- if (it != fileLocationSet.end())
- {
- MyListFileLocationNode *node = it->node;
- MyListNode *parent = node->parent();
-
- parent->childRemoved(node);
- }
+ fileLocationDelete(id, 0);
MyList::instance()->database()->removeFileLocation(id);
}
parentNode->childAdded(locationId);
}
+void MyListModel::fileLocationDelete(int locationId, int fid)
+{
+ Q_UNUSED(fid);
+
+ auto it = fileLocationSet.find(locationId);
+
+ if (it == fileLocationSet.end())
+ return;
+
+ MyListFileLocationNode *node = it->node;
+ MyListNode *parent = node->parent();
+
+ parent->childRemoved(node);
+}
+
QModelIndex MyListModel::index(MyListNode *node) const
{
if (!node || node == rootItem)
void fileInsert(int fid, int eid, int aid);
void fileLocationInsert(int locationId, int fid);
+ void fileLocationDelete(int locationId, int fid);
+
protected:
QModelIndex index(MyListNode *node) const;
void fetchFinished(MyListNode *node, int newrows);
CREATE OR REPLACE RULE file_location_update_notify_rule AS
ON UPDATE TO file_location DO SELECT pg_notify('file_location_update', new.location_id::text || ',' || new.fid::text);
+
+CREATE OR REPLACE RULE file_location_delete_notify_rule AS
+ ON DELETE TO file_location DO SELECT pg_notify('file_location_delete', old.location_id::text || ',' || old.fid::text);