diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-26 11:44:36 +0100 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-03-26 11:44:36 +0100 |
commit | b553ff390353a860195b61f5418847880f24410d (patch) | |
tree | 2040bb18fcc904bcc9cb0e758428c28b0c79db07 /db | |
parent | d0fde9dbce129b0dbb94d577d9685764c7d5ea4b (diff) |
fix referential integrity
Diffstat (limited to 'db')
-rw-r--r-- | db/feedmapper.php | 12 | ||||
-rw-r--r-- | db/foldermapper.php | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/db/feedmapper.php b/db/feedmapper.php index 22f71d7a3..05fa729b4 100644 --- a/db/feedmapper.php +++ b/db/feedmapper.php @@ -27,6 +27,8 @@ namespace OCA\News\Db; use \OCA\AppFramework\Core\API; use \OCA\AppFramework\Db\Mapper; +use \OCA\AppFramework\Db\Entity; + class FeedMapper extends Mapper implements IMapper { @@ -95,7 +97,17 @@ class FeedMapper extends Mapper implements IMapper { $feed->fromRow($row); return $feed; + } + + + public function delete(Entity $entity){ + parent::delete($entity); + // someone please slap me for doing this manually :P + // we needz CASCADE + FKs please + $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` = ?'; + $params = array($entity->getId()); + $this->execute($sql, $params); } }
\ No newline at end of file diff --git a/db/foldermapper.php b/db/foldermapper.php index 82739df1b..8978bb45b 100644 --- a/db/foldermapper.php +++ b/db/foldermapper.php @@ -27,6 +27,7 @@ namespace OCA\News\Db; use \OCA\AppFramework\Core\API; use \OCA\AppFramework\Db\Mapper; +use \OCA\AppFramework\Db\Entity; class FolderMapper extends Mapper implements IMapper { @@ -79,4 +80,20 @@ class FolderMapper extends Mapper implements IMapper { return $this->findAllRows($sql, $params); } + + + public function delete(Entity $entity){ + parent::delete($entity); + + // someone please slap me for doing this manually :P + // we needz CASCADE + FKs please + $sql = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?; '. + 'DELETE `items` FROM `*PREFIX*news_items` `items` '. + 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '. + '`items`.`feed_id` = `feed`.`id` WHERE `feeds`.`id` IS NULL;'; + $params = array($entity->getId()); + $this->execute($sql, $params); + } + + }
\ No newline at end of file |