diff --git a/hive/db/schema.py b/hive/db/schema.py index ffd0516155ace61ecdaa33dbf06961a4a58f9c40..9410a8e307fe5a9fb54ea42758bcc5a91ee2d962 100644 --- a/hive/db/schema.py +++ b/hive/db/schema.py @@ -1604,7 +1604,6 @@ def setup(db): "condenser_api_post_ex_type.sql", "condenser_get_blog.sql", "condenser_get_content.sql", - "condenser_get_discussions_by_created.sql", "condenser_get_discussions_by_blog.sql", "hot_and_trends.sql", "update_hive_posts_children_count.sql" diff --git a/hive/db/sql_scripts/bridge_get_ranked_post_for_communities.sql b/hive/db/sql_scripts/bridge_get_ranked_post_for_communities.sql index c631deffabf66090b1a8c5870d70e51fbec88874..147377f89dba7dbae03f9361ede4c8f9796fa430 100644 --- a/hive/db/sql_scripts/bridge_get_ranked_post_for_communities.sql +++ b/hive/db/sql_scripts/bridge_get_ranked_post_for_communities.sql @@ -474,7 +474,7 @@ $function$ language plpgsql STABLE; DROP FUNCTION IF EXISTS bridge_get_ranked_post_by_created_for_community; -CREATE FUNCTION bridge_get_ranked_post_by_created_for_community( in _community VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT ) +CREATE FUNCTION bridge_get_ranked_post_by_created_for_community( in _community VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT, in _bridge_api BOOLEAN ) RETURNS SETOF bridge_api_post AS $function$ @@ -528,7 +528,7 @@ BEGIN JOIN hive_communities hc ON hp1.community_id = hc.id JOIN hive_accounts_view ha ON hp1.author_id = ha.id WHERE hc.name = _community AND hp1.counter_deleted = 0 AND hp1.depth = 0 - AND NOT hp1.is_pinned -- concatenated with bridge_get_ranked_post_pinned_for_community + AND ( NOT _bridge_api OR NOT hp1.is_pinned ) -- concatenated with bridge_get_ranked_post_pinned_for_community when called for bridge_api AND NOT ha.is_grayed AND ( __post_id = 0 OR hp1.id < __post_id ) ORDER BY hp1.id DESC LIMIT _limit diff --git a/hive/db/sql_scripts/condenser_get_discussions_by_created.sql b/hive/db/sql_scripts/condenser_get_discussions_by_created.sql deleted file mode 100644 index c3a1d6c543e6549962f24b39d8485c73fce83f86..0000000000000000000000000000000000000000 --- a/hive/db/sql_scripts/condenser_get_discussions_by_created.sql +++ /dev/null @@ -1,126 +0,0 @@ -DROP FUNCTION IF EXISTS condenser_get_discussions_by_created; - -CREATE FUNCTION condenser_get_discussions_by_created( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT ) -RETURNS SETOF bridge_api_post -AS -$function$ -DECLARE - __post_id INT; - __community VARCHAR; - __tag_id INT; - __category_id INT; -BEGIN - - __post_id = find_comment_id( _author, _permlink, True ); - __community = ( SELECT substring(_tag from '^hive-') ); - - __tag_id = ( SELECT id FROM hive_tag_data WHERE tag = _tag ); - __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag ); - - RETURN QUERY 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 - INNER JOIN hive_post_tags hpt ON hpt.post_id = hp.id - WHERE ( __tag_id = 0 OR hpt.tag_id = __tag_id ) AND ( __post_id = 0 OR hp.id < __post_id ) - AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( __category_id = 0 OR hp.category_id = __category_id ) ) ) - ORDER BY hp.id DESC LIMIT _limit; -END -$function$ -language plpgsql STABLE; - -DROP FUNCTION IF EXISTS condenser_get_discussions_by_created_with_empty_tag; - -CREATE FUNCTION condenser_get_discussions_by_created_with_empty_tag( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT ) -RETURNS SETOF bridge_api_post -AS -$function$ -DECLARE - __post_id INT; - __community VARCHAR; - __category_id INT; -BEGIN - - __post_id = find_comment_id( _author, _permlink, True ); - __community = ( SELECT substring(_tag from '^hive-') ); - - __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag ); - - RETURN QUERY 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 ( __post_id = 0 OR hp.id < __post_id ) - AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( __category_id = 0 OR hp.category_id = __category_id ) ) ) - ORDER BY hp.id DESC LIMIT _limit; -END -$function$ -language plpgsql STABLE; diff --git a/hive/server/bridge_api/methods.py b/hive/server/bridge_api/methods.py index 3d27022a7294e88b375d7c740daa6a034e626855..2ed848d6e27a2350b42da4d1d4af5cdf87c3ce87 100644 --- a/hive/server/bridge_api/methods.py +++ b/hive/server/bridge_api/methods.py @@ -129,7 +129,7 @@ async def _get_ranked_posts_for_communities( db, sort:str, community, start_auth return await execute_community_query(db, sql, limit) if sort == 'created': - sql = "SELECT * FROM bridge_get_ranked_post_by_created_for_community( (:community)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )" + sql = "SELECT * FROM bridge_get_ranked_post_by_created_for_community( (:community)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT, True )" result_with_pinned_posts = await execute_community_query(db, pinned_sql, limit) limit -= len(result_with_pinned_posts) if limit > 0: diff --git a/hive/server/condenser_api/methods.py b/hive/server/condenser_api/methods.py index 0d511267215f1e1a1af3d6fd35954113052efacd..466c23ccca5b7d690628dbec4794af54c9e2b611 100644 --- a/hive/server/condenser_api/methods.py +++ b/hive/server/condenser_api/methods.py @@ -250,10 +250,12 @@ async def get_posts_by_given_sort(context, sort: str, start_author: str = '', st is_community = tag[:5] == 'hive-' if sort == 'created': - if tag == '': - sql = "SELECT * FROM condenser_get_discussions_by_created_with_empty_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )" + if is_community: + sql = "SELECT * FROM bridge_get_ranked_post_by_created_for_community( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT, False )" + elif tag == '': + sql = "SELECT * FROM bridge_get_ranked_post_by_created( (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )" else: - sql = "SELECT * FROM condenser_get_discussions_by_created( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )" + sql = "SELECT * FROM bridge_get_ranked_post_by_created_for_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )" elif sort == 'trending': if is_community: sql = "SELECT * FROM bridge_get_ranked_post_by_trends_for_community( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT, False )" diff --git a/tests/tests_api b/tests/tests_api index ad99cf64b053ec80869ce03ab0d4d02a96964d18..ef358b5ae508326e56e69de1c0aafda2bd4cddab 160000 --- a/tests/tests_api +++ b/tests/tests_api @@ -1 +1 @@ -Subproject commit ad99cf64b053ec80869ce03ab0d4d02a96964d18 +Subproject commit ef358b5ae508326e56e69de1c0aafda2bd4cddab