From eaf78017783fa844b2ddf2a4de3077d5c13cf1d5 Mon Sep 17 00:00:00 2001 From: denfil Date: Thu, 24 Dec 2015 17:34:55 +0300 Subject: [PATCH] Refactor API --- jsonrpc.php | 24 ++++++++++++++++++++++-- models/feed.php | 21 ++------------------- models/group.php | 44 ++++++++++++++++++-------------------------- 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/jsonrpc.php b/jsonrpc.php index 6e23fef..41a5579 100644 --- a/jsonrpc.php +++ b/jsonrpc.php @@ -20,13 +20,27 @@ $server->register('app.version', function () { // Get all feeds $server->register('feed.list', function () { - return Model\Feed\get_all(); + $feeds = Model\Feed\get_all(); + if (!$feeds) { + return $feeds; + } + $groups = Model\Group\get_feeds_map(); + foreach ($feeds as &$feed) { + $feed['feed_group_ids'] = isset($groups[$feed['id']]) + ? $groups[$feed['id']] + : array(); + } + + return $feeds; }); // Get one feed $server->register('feed.info', function ($feed_id) { - return Model\Feed\get($feed_id); + $result = Model\Feed\get($feed_id); + $result['feed_group_ids'] = Model\Group\get_feed_group_ids($feed_id); + + return $result; }); // Add a new feed @@ -77,6 +91,12 @@ $server->register('feed.update', function($feed_id) { return Model\Feed\refresh($feed_id); }); +// Get all groups +$server->register('group.list', function () { + + return Model\Group\get_all(); +}); + // Get all items for a specific feed $server->register('item.feed.list', function ($feed_id, $offset = null, $limit = null) { diff --git a/models/feed.php b/models/feed.php index 8c91c0b..7f84d3c 100644 --- a/models/feed.php +++ b/models/feed.php @@ -342,18 +342,10 @@ function count_failed_feeds() // Get all feeds function get_all() { - $result = Database::getInstance('db') + return Database::getInstance('db') ->table('feeds') ->asc('title') ->findAll(); - $groups = Group\get_all_grouped_by_feeds(); - foreach ($result as &$feed) { - $feed['groups'] = isset($groups[$feed['id']]) - ? $groups[$feed['id']] - : array(); - } - - return $result; } // Get all feeds with the number unread/total items in the order failed, working, disabled @@ -405,19 +397,10 @@ function count_items($feed_id) // Get one feed function get($feed_id) { - $result = Database::getInstance('db') + return Database::getInstance('db') ->table('feeds') ->eq('id', $feed_id) ->findOne(); - if (!$result) { - return $result; - } - $groups = Group\get_all_grouped_by_feeds(); - $result['groups'] = isset($groups[$result['id']]) - ? $groups[$result['id']] - : array(); - - return $result; } // Update parsing error column diff --git a/models/group.php b/models/group.php index b9e69a5..4682552 100644 --- a/models/group.php +++ b/models/group.php @@ -17,32 +17,6 @@ function get_all() ->findAll(); } -/** - * Get all groups grouped by feed_id - * - * @return array - */ -function get_all_grouped_by_feeds() -{ - $groups = Database::getInstance('db') - ->table('groups') - ->join('feeds_groups', 'group_id', 'id') - ->columns('feed_id', 'group_id', 'title') - ->findAll(); - if (!$groups) { - return array(); - } - $result = array(); - foreach ($groups as $group) { - $result[$group['feed_id']][] = [ - 'group_id' => $group['group_id'], - 'title' => $group['title'] - ]; - } - - return $result; -} - /** * Get assoc array of group ids with assigned feeds ids * @@ -73,6 +47,24 @@ function get_map() return $map; } +/** + * Get assoc array of feeds ids with assigned groups ids + * + * @return array + */ +function get_feeds_map() +{ + $result = Database::getInstance('db') + ->table('feeds_groups') + ->findAll(); + $map = array(); + foreach ($result as $row) { + $map[$row['feed_id']][] = $row['group_id']; + } + + return $map; +} + /** * Get all groups assigned to feed *