From e20eb313d56c6febf709e7d8e0f13430523bd7e0 Mon Sep 17 00:00:00 2001 From: mcull Date: Sun, 28 Sep 2025 23:45:37 -0700 Subject: [PATCH 1/2] Fix library card member counts to exclude inactive users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Library cards were displaying inflated member counts by including inactive users in the totals. This update ensures accurate member count display across all API endpoints by filtering `_count.members` queries for `{ isActive: true }`. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/app/api/admin/collections/route.ts | 2 +- src/app/api/collections/[id]/join/route.ts | 2 +- src/app/api/collections/[id]/route.ts | 6 +++--- src/app/api/collections/discover/route.ts | 2 +- src/app/api/collections/route.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app/api/admin/collections/route.ts b/src/app/api/admin/collections/route.ts index 6af8987..d703bda 100644 --- a/src/app/api/admin/collections/route.ts +++ b/src/app/api/admin/collections/route.ts @@ -63,7 +63,7 @@ export async function GET(request: NextRequest) { }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: true, invitations: true, }, diff --git a/src/app/api/collections/[id]/join/route.ts b/src/app/api/collections/[id]/join/route.ts index 3d37c8e..82cb97b 100644 --- a/src/app/api/collections/[id]/join/route.ts +++ b/src/app/api/collections/[id]/join/route.ts @@ -182,7 +182,7 @@ export async function POST( }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: true, }, }, diff --git a/src/app/api/collections/[id]/route.ts b/src/app/api/collections/[id]/route.ts index 0f93688..54dad64 100644 --- a/src/app/api/collections/[id]/route.ts +++ b/src/app/api/collections/[id]/route.ts @@ -88,7 +88,7 @@ export async function GET( }, _count: { select: { - members: true, + members: { where: { isActive: true } }, }, }, }, @@ -438,7 +438,7 @@ export async function PUT( }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: { where: { item: { currentBorrowRequestId: null }, @@ -505,7 +505,7 @@ export async function DELETE( _count: { select: { items: true, - members: true, + members: { where: { isActive: true } }, }, }, }, diff --git a/src/app/api/collections/discover/route.ts b/src/app/api/collections/discover/route.ts index 63f7962..1417e80 100644 --- a/src/app/api/collections/discover/route.ts +++ b/src/app/api/collections/discover/route.ts @@ -98,7 +98,7 @@ export async function GET(request: NextRequest) { }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: { where: { item: { currentBorrowRequestId: null }, diff --git a/src/app/api/collections/route.ts b/src/app/api/collections/route.ts index 45fa3ef..05db444 100644 --- a/src/app/api/collections/route.ts +++ b/src/app/api/collections/route.ts @@ -82,7 +82,7 @@ export async function GET() { }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: { where: { item: { currentBorrowRequestId: null } } }, }, }, @@ -115,7 +115,7 @@ export async function GET() { }, _count: { select: { - members: true, + members: { where: { isActive: true } }, items: { where: { item: { currentBorrowRequestId: null } } }, }, }, From 41b476c0f04a0f89665903786ce382ad458f263b Mon Sep 17 00:00:00 2001 From: mcull Date: Mon, 29 Sep 2025 00:07:44 -0700 Subject: [PATCH 2/2] Fix member count consistency by filtering for active users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolved double-counting issue where member counts were inconsistent between endpoints. The root cause was that `members` relation queries filtered by both `isActive: true` and `user: { status: 'active' }`, but `_count.members` queries only filtered by `isActive: true`. Updated all `_count.members` queries to consistently filter for active members with active user accounts, ensuring accurate member counts across all library cards and API responses. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/app/api/admin/collections/route.ts | 2 +- src/app/api/collections/[id]/join/route.ts | 2 +- src/app/api/collections/[id]/route.ts | 6 +++--- src/app/api/collections/discover/route.ts | 2 +- src/app/api/collections/route.ts | 6 ++++-- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/app/api/admin/collections/route.ts b/src/app/api/admin/collections/route.ts index d703bda..fa35fd9 100644 --- a/src/app/api/admin/collections/route.ts +++ b/src/app/api/admin/collections/route.ts @@ -63,7 +63,7 @@ export async function GET(request: NextRequest) { }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, items: true, invitations: true, }, diff --git a/src/app/api/collections/[id]/join/route.ts b/src/app/api/collections/[id]/join/route.ts index 82cb97b..de00c3b 100644 --- a/src/app/api/collections/[id]/join/route.ts +++ b/src/app/api/collections/[id]/join/route.ts @@ -182,7 +182,7 @@ export async function POST( }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, items: true, }, }, diff --git a/src/app/api/collections/[id]/route.ts b/src/app/api/collections/[id]/route.ts index 54dad64..776c57f 100644 --- a/src/app/api/collections/[id]/route.ts +++ b/src/app/api/collections/[id]/route.ts @@ -88,7 +88,7 @@ export async function GET( }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, }, }, }, @@ -438,7 +438,7 @@ export async function PUT( }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, items: { where: { item: { currentBorrowRequestId: null }, @@ -505,7 +505,7 @@ export async function DELETE( _count: { select: { items: true, - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, }, }, }, diff --git a/src/app/api/collections/discover/route.ts b/src/app/api/collections/discover/route.ts index 1417e80..78f5eca 100644 --- a/src/app/api/collections/discover/route.ts +++ b/src/app/api/collections/discover/route.ts @@ -98,7 +98,7 @@ export async function GET(request: NextRequest) { }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, items: { where: { item: { currentBorrowRequestId: null }, diff --git a/src/app/api/collections/route.ts b/src/app/api/collections/route.ts index 05db444..687bbf2 100644 --- a/src/app/api/collections/route.ts +++ b/src/app/api/collections/route.ts @@ -82,7 +82,7 @@ export async function GET() { }, _count: { select: { - members: { where: { isActive: true } }, + members: { where: { isActive: true, user: { status: 'active' } } }, items: { where: { item: { currentBorrowRequestId: null } } }, }, }, @@ -115,7 +115,9 @@ export async function GET() { }, _count: { select: { - members: { where: { isActive: true } }, + members: { + where: { isActive: true, user: { status: 'active' } }, + }, items: { where: { item: { currentBorrowRequestId: null } } }, }, },