From b61d06b582e99005cf5a17b26683fe906387b7c6 Mon Sep 17 00:00:00 2001 From: mtrela <mtrela@syncad.com> Date: Mon, 2 Nov 2020 14:34:02 +0100 Subject: [PATCH] Unnecessary methods `load_posts`, `load_posts_keyed` are removed --- hive/server/bridge_api/methods.py | 2 +- hive/server/bridge_api/objects.py | 93 -------------------------- hive/server/condenser_api/get_state.py | 2 - hive/server/condenser_api/methods.py | 1 - hive/server/condenser_api/objects.py | 89 ------------------------ 5 files changed, 1 insertion(+), 186 deletions(-) diff --git a/hive/server/bridge_api/methods.py b/hive/server/bridge_api/methods.py index fcb42bc8f..ff6908821 100644 --- a/hive/server/bridge_api/methods.py +++ b/hive/server/bridge_api/methods.py @@ -1,7 +1,7 @@ """Bridge API public endpoints for posts""" import hive.server.bridge_api.cursor as cursor -from hive.server.bridge_api.objects import load_posts, load_profiles, _bridge_post_object, append_statistics_to_post +from hive.server.bridge_api.objects import load_profiles, _bridge_post_object, append_statistics_to_post from hive.server.database_api.methods import find_votes_impl, VotesPresentation from hive.server.common.helpers import ( return_error_info, diff --git a/hive/server/bridge_api/objects.py b/hive/server/bridge_api/objects.py index e2e9550fc..5c6fa3d1d 100644 --- a/hive/server/bridge_api/objects.py +++ b/hive/server/bridge_api/objects.py @@ -57,99 +57,6 @@ async def load_profiles(db, names): rows = await db.query_all(sql, names=tuple(names)) return [_bridge_profile_object(row) for row in rows] -async def load_posts_keyed(db, ids, truncate_body=0): - """Given an array of post ids, returns full posts objects keyed by id.""" - # pylint: disable=too-many-locals - assert ids, 'no ids passed to load_posts_keyed' - - # fetch posts and associated author reps - sql = """ - SELECT - hp.id, - hp.author, - hp.parent_author, - hp.author_rep, - hp.root_title, - hp.beneficiaries, - hp.max_accepted_payout, - hp.percent_hbd, - hp.url, - hp.permlink, - hp.parent_permlink_or_category, - hp.title, - hp.body, - hp.category, - hp.depth, - hp.promoted, - hp.payout, - hp.pending_payout, - hp.payout_at, - hp.is_paidout, - hp.children, - hp.votes, - hp.created_at, - hp.updated_at, - hp.rshares, - hp.abs_rshares, - hp.json, - hp.is_hidden, - hp.is_grayed, - hp.total_votes, - hp.sc_trend, - hp.role_title, - hp.community_title, - hp.role_id, - hp.is_pinned, - hp.curator_payout_value - FROM hive_posts_view hp - WHERE hp.id IN :ids - """ - result = await db.query_all(sql, ids=tuple(ids)) - - # TODO: author affiliation? - posts_by_id = {} - for row in result: - row = dict(row) - - post = _bridge_post_object(row, truncate_body=truncate_body) - post['active_votes'] = await find_votes_impl(db, row['author'], row['permlink'], VotesPresentation.BridgeApi) - append_statistics_to_post(post, row, row['is_pinned'], None, True) - - posts_by_id[row['id']] = post - - return posts_by_id - -async def load_posts(db, ids, truncate_body=0): - """Given an array of post ids, returns full objects in the same order.""" - if not ids: - return [] - - # posts are keyed by id so we can return output sorted by input order - posts_by_id = await load_posts_keyed(db, ids, truncate_body=truncate_body) - - # in rare cases of cache inconsistency, recover and warn - missed = set(ids) - posts_by_id.keys() - if missed: - log.info("get_posts do not exist in cache: %s", repr(missed)) - for _id in missed: - ids.remove(_id) - sql = """ - SELECT - hp.id, ha_a.name as author, hpd_p.permlink as permlink, hp.depth, hp.created_at - FROM - hive_posts hp - INNER JOIN hive_accounts ha_a ON ha_a.id = hp.author_id - INNER JOIN hive_permlink_data hpd_p ON hpd_p.id = hp.permlink_id - WHERE hp.id = :id """ - post = await db.query_row(sql, id=_id) - if post is None: - # TODO: This should never happen. See #173 for analysis - log.error("missing post: id %i", _id) - else: - log.info("requested deleted post: %s", dict(post)) - - return [posts_by_id[_id] for _id in ids] - def _bridge_profile_object(row): """Convert an internal account record into legacy-steemd style.""" diff --git a/hive/server/condenser_api/get_state.py b/hive/server/condenser_api/get_state.py index 9c475c56f..88d2fb7ea 100644 --- a/hive/server/condenser_api/get_state.py +++ b/hive/server/condenser_api/get_state.py @@ -11,8 +11,6 @@ from hive.server.common.mutes import Mutes from hive.server.condenser_api.objects import ( load_accounts, - load_posts, - load_posts_keyed, _mute_votes, _condenser_post_object) from hive.server.common.helpers import ( diff --git a/hive/server/condenser_api/methods.py b/hive/server/condenser_api/methods.py index 5d58fb174..1afd95d41 100644 --- a/hive/server/condenser_api/methods.py +++ b/hive/server/condenser_api/methods.py @@ -2,7 +2,6 @@ from functools import wraps import hive.server.condenser_api.cursor as cursor -from hive.server.condenser_api.objects import load_posts from hive.server.condenser_api.objects import _mute_votes, _condenser_post_object from hive.server.common.helpers import ( ApiError, diff --git a/hive/server/condenser_api/objects.py b/hive/server/condenser_api/objects.py index 607c3402c..49d0a69e4 100644 --- a/hive/server/condenser_api/objects.py +++ b/hive/server/condenser_api/objects.py @@ -19,100 +19,11 @@ async def load_accounts(db, names, lite = False): rows = await db.query_all(sql, names=tuple(names)) return [_condenser_account_object(row) for row in rows] -async def load_posts_keyed(db, ids, truncate_body=0): - """Given an array of post ids, returns full posts objects keyed by id.""" - assert ids, 'no ids passed to load_posts_keyed' - - # fetch posts and associated author reps - sql = """ - SELECT hp.id, - hp.author, - hp.author_rep, - hp.permlink, - hp.title, - hp.body, - hp.category, - hp.depth, - hp.promoted, - hp.payout, - hp.pending_payout, - hp.payout_at, - hp.is_paidout, - hp.children, - hp.votes, - hp.created_at, - hp.updated_at, - hp.rshares, - hp.json as json, - hp.is_hidden, - hp.is_grayed, - hp.total_votes, - hp.parent_author, - hp.parent_permlink_or_category, - hp.curator_payout_value, - hp.root_author, - hp.root_permlink, - hp.max_accepted_payout, - hp.percent_hbd, - hp.allow_replies, - hp.allow_votes, - hp.allow_curation_rewards, - hp.beneficiaries, - hp.url, - hp.root_title - FROM hive_posts_view hp - WHERE hp.id IN :ids""" - - result = await db.query_all(sql, ids=tuple(ids)) - - muted_accounts = Mutes.all() - posts_by_id = {} - for row in result: - row = dict(row) - post = _condenser_post_object(row, truncate_body=truncate_body) - - post['active_votes'] = await find_votes_impl(db, row['author'], row['permlink'], VotesPresentation.CondenserApi) - post['active_votes'] = _mute_votes(post['active_votes'], muted_accounts) - posts_by_id[row['id']] = post - - return posts_by_id - def _mute_votes(votes, muted_accounts): if not muted_accounts: return votes return [v for v in votes if v['voter'] not in muted_accounts] -async def load_posts(db, ids, truncate_body=0): - """Given an array of post ids, returns full objects in the same order.""" - if not ids: - return [] - - # posts are keyed by id so we can return output sorted by input order - posts_by_id = await load_posts_keyed(db, ids, truncate_body=truncate_body) - - # in rare cases of cache inconsistency, recover and warn - missed = set(ids) - posts_by_id.keys() - if missed: - log.info("get_posts do not exist in cache: %s", repr(missed)) - for _id in missed: - ids.remove(_id) - sql = """ - SELECT - hp.id, ha_a.name as author, hpd_p.permlink as permlink, hp.depth, hp.created_at - FROM - hive_posts hp - INNER JOIN hive_accounts ha_a ON ha_a.id = hp.author_id - INNER JOIN hive_permlink_data hpd_p ON hpd_p.id = hp.permlink_id - WHERE hp.id = :id """ - post = await db.query_row(sql, id=_id) - if post is None: - # TODO: This should never happen. See #173 for analysis - log.error("missing post: id %i", _id) - else: - log.info("requested deleted post: %s", dict(post)) - - return [posts_by_id[_id] for _id in ids] - def _condenser_account_object(row): """Convert an internal account record into legacy-steemd style.""" #The member `vote_weight` from `hive_accounts` is removed, so currently the member `net_vesting_shares` is equals to zero. -- GitLab