From ee45108feadea2c68d61a87d3bbbc65672917894 Mon Sep 17 00:00:00 2001
From: Kevin Szuchet <31735779+kevinszuchet@users.noreply.github.com>
Date: Wed, 29 Jan 2025 11:45:12 -0300
Subject: [PATCH] fix: Error with order on count query (#45)

---
 src/adapters/db.ts            | 15 +++++++++------
 test/unit/adapters/db.spec.ts | 10 ++++++++++
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/adapters/db.ts b/src/adapters/db.ts
index ae86f81..c8dd6e5 100644
--- a/src/adapters/db.ts
+++ b/src/adapters/db.ts
@@ -73,15 +73,18 @@ export function createDBComponent(components: Pick<AppComponents, 'pg' | 'logs'>
         FROM friendship_actions fa2
         WHERE fa2.friendship_id = fa.friendship_id
       )
-      ORDER BY fa.timestamp DESC
     `)
 
-    if (limit) {
-      baseQuery.append(SQL` LIMIT ${limit}`)
-    }
+    if (!onlyCount) {
+      baseQuery.append(SQL` ORDER BY fa.timestamp DESC`)
+
+      if (limit) {
+        baseQuery.append(SQL` LIMIT ${limit}`)
+      }
 
-    if (offset) {
-      baseQuery.append(SQL` OFFSET ${offset}`)
+      if (offset) {
+        baseQuery.append(SQL` OFFSET ${offset}`)
+      }
     }
 
     return baseQuery
diff --git a/test/unit/adapters/db.spec.ts b/test/unit/adapters/db.spec.ts
index 9f0847b..01753b3 100644
--- a/test/unit/adapters/db.spec.ts
+++ b/test/unit/adapters/db.spec.ts
@@ -293,6 +293,11 @@ describe('db', () => {
       const result = await dbComponent.getReceivedFriendshipRequestsCount('0x456')
 
       expect(result).toBe(mockCount)
+      expect(mockPg.query).not.toHaveBeenCalledWith(
+        expect.objectContaining({
+          text: expect.stringContaining('ORDER BY fa.timestamp DESC')
+        })
+      )
     })
   })
 
@@ -336,6 +341,11 @@ describe('db', () => {
       const result = await dbComponent.getSentFriendshipRequestsCount('0x123')
 
       expect(result).toBe(mockCount)
+      expect(mockPg.query).not.toHaveBeenCalledWith(
+        expect.objectContaining({
+          text: expect.stringContaining('ORDER BY fa.timestamp DESC')
+        })
+      )
     })
   })