From 878c81683c4ca8a53cb881677215dd017301f212 Mon Sep 17 00:00:00 2001
From: Howo <drov.fr@protonmail.com>
Date: Mon, 27 Jan 2025 00:04:53 +0000
Subject: [PATCH] Update list_subscribers to order by name instead of by id

---
 .../bridge_api_list_subscribers.sql           | 23 ++++++++++---------
 .../hive-165317_last_abit.pat.json            |  8 ++++++-
 .../hive-165317_last_alice.pat.json           | 14 ++++++++++-
 .../hive-165317_last_gtg.pat.json             | 20 +---------------
 ...pat.json => hive-186669_last_gtg.pat.json} |  4 ++--
 ....yaml => hive-186669_last_gtg.tavern.yaml} |  2 +-
 .../list_subscribers/paginated.pat.json       |  8 +------
 .../paginated_limit_1.pat.json                |  8 +++----
 8 files changed, 41 insertions(+), 46 deletions(-)
 rename tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/{hive-186669_last_roadscape.pat.json => hive-186669_last_gtg.pat.json} (76%)
 rename tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/{hive-186669_last_roadscape.tavern.yaml => hive-186669_last_gtg.tavern.yaml} (90%)

diff --git a/hive/db/sql_scripts/postgrest/bridge_api/bridge_api_list_subscribers.sql b/hive/db/sql_scripts/postgrest/bridge_api/bridge_api_list_subscribers.sql
index 2c5a233ea..ec735b483 100644
--- a/hive/db/sql_scripts/postgrest/bridge_api/bridge_api_list_subscribers.sql
+++ b/hive/db/sql_scripts/postgrest/bridge_api/bridge_api_list_subscribers.sql
@@ -8,7 +8,7 @@ $$
 DECLARE
     _community_id INT;
     _community TEXT;
-    _subscription_id INT;
+    _last_name TEXT;
     _limit INTEGER := 100;
 BEGIN
     _params = hivemind_postgrest_utilities.validate_json_arguments(_params, '{"community": "string", "last": "string", "limit": "number"}', 1, '{"community": "given community name is not valid"}');
@@ -17,13 +17,14 @@ BEGIN
     _community = hivemind_postgrest_utilities.valid_community(_community);
     _community_id = hivemind_postgrest_utilities.find_community_id(_community, True);
 
-    _subscription_id =
-      hivemind_postgrest_utilities.find_subscription_id(
-        hivemind_postgrest_utilities.valid_account(
-          hivemind_postgrest_utilities.parse_argument_from_json(_params, 'last', False),
-          True),
-        _community,
-        True);
+    _last_name = hivemind_postgrest_utilities.valid_account(
+        hivemind_postgrest_utilities.parse_argument_from_json(_params, 'last', False),
+        True
+    );
+
+    IF _last_name IS NOT NULL THEN
+        PERFORM hivemind_postgrest_utilities.find_subscription_id(_last_name,  _community, True); -- Check that account exists and is subscribed to the community
+    END IF;
 
     _limit = hivemind_postgrest_utilities.parse_integer_argument_from_json(_params, 'limit', False);
     _limit = hivemind_postgrest_utilities.valid_number(_limit, 100, 1, 100, 'limit');
@@ -40,7 +41,8 @@ BEGIN
           LEFT JOIN hivemind_app.hive_roles hr ON hs.account_id = hr.account_id
                AND hs.community_id = hr.community_id
           JOIN hivemind_app.hive_accounts ha ON hs.account_id = ha.id
-          WHERE hs.community_id = _community_id AND (_subscription_id = 0 OR (hs.id < _subscription_id))
+          WHERE hs.community_id = _community_id
+          AND (_last_name IS NULL OR ha.name COLLATE "C" > _last_name COLLATE "C")
           ORDER BY ha.name ASC
           LIMIT _limit
        ) row
@@ -48,5 +50,4 @@ BEGIN
       '[]'::JSONB
     );
 END
-$$
-;
\ No newline at end of file
+$$;
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_abit.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_abit.pat.json
index 1833faaf9..7b2ba2ba0 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_abit.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_abit.pat.json
@@ -1,4 +1,10 @@
 [
+  [
+    "agartha",
+    "guest",
+    null,
+    "2016-09-15T18:02:03"
+  ],
   [
     "alice",
     "guest",
@@ -29,4 +35,4 @@
     null,
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_alice.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_alice.pat.json
index 75d5239ca..5e97163ac 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_alice.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_alice.pat.json
@@ -1,14 +1,26 @@
 [
+  [
+    "camilla",
+    "guest",
+    null,
+    "2016-09-15T18:01:57"
+  ],
   [
     "good-karma",
     "guest",
     null,
     "2016-09-15T18:01:51"
   ],
+  [
+    "gtg",
+    "guest",
+    null,
+    "2016-09-15T18:02:00"
+  ],
   [
     "test-safari",
     "guest",
     null,
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_gtg.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_gtg.pat.json
index 9156b185e..ba1e4128a 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_gtg.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-165317_last_gtg.pat.json
@@ -1,26 +1,8 @@
 [
-  [
-    "alice",
-    "guest",
-    null,
-    "2016-09-15T18:01:54"
-  ],
-  [
-    "camilla",
-    "guest",
-    null,
-    "2016-09-15T18:01:57"
-  ],
-  [
-    "good-karma",
-    "guest",
-    null,
-    "2016-09-15T18:01:51"
-  ],
   [
     "test-safari",
     "guest",
     null,
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.pat.json
similarity index 76%
rename from tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.pat.json
rename to tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.pat.json
index a9826701c..d6ec6ec70 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.pat.json
@@ -1,8 +1,8 @@
 [
   [
-    "gtg",
+    "roadscape",
     "guest",
     null,
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.tavern.yaml b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.tavern.yaml
similarity index 90%
rename from tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.tavern.yaml
rename to tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.tavern.yaml
index 3a6cc5356..f2a4526af 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_roadscape.tavern.yaml
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/hive-186669_last_gtg.tavern.yaml
@@ -19,7 +19,7 @@
           jsonrpc: "2.0"
           id: 1
           method: "bridge.list_subscribers"
-          params: {"community":"hive-186669", "last":"roadscape"}
+          params: {"community":"hive-186669", "last":"gtg"}
       response:
         status_code: 200
         verify_response_with:
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated.pat.json
index faf3294e5..aaf628edd 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated.pat.json
@@ -1,14 +1,8 @@
 [
-  [
-    "gtg",
-    "guest",
-    null,
-    "2016-09-15T18:01:48"
-  ],
   [
     "test-safari",
     "admin",
     "",
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
diff --git a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated_limit_1.pat.json b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated_limit_1.pat.json
index a9826701c..aaf628edd 100644
--- a/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated_limit_1.pat.json
+++ b/tests/api_tests/hivemind/tavern/bridge_api_patterns/list_subscribers/paginated_limit_1.pat.json
@@ -1,8 +1,8 @@
 [
   [
-    "gtg",
-    "guest",
-    null,
+    "test-safari",
+    "admin",
+    "",
     "2016-09-15T18:01:48"
   ]
-]
+]
\ No newline at end of file
-- 
GitLab