From 716b5d33334ad0a2fe18443ffd3f706deba32bfd Mon Sep 17 00:00:00 2001 From: Brian O'Kelley Date: Sat, 3 Jan 2026 16:09:17 -0500 Subject: [PATCH] Fix SQL query errors in admin user context endpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The /api/admin/users/:userId/context endpoint was returning 500 errors due to incorrect table and column references in the SQL queries. Fixes: - insights query: `insight_types` → `member_insight_types` - insights query: join on `it.key = mi.type_key` → `mit.id = mi.insight_type_id` - insights query: order by `mi.updated_at` → `mi.created_at` - outreach query: `proactive_outreach` → `member_outreach` - outreach query: `response_received` → `user_responded` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .changeset/thick-cows-add.md | 2 ++ server/src/routes/admin.ts | 16 ++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 .changeset/thick-cows-add.md diff --git a/.changeset/thick-cows-add.md b/.changeset/thick-cows-add.md new file mode 100644 index 0000000000..a845151cc8 --- /dev/null +++ b/.changeset/thick-cows-add.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/server/src/routes/admin.ts b/server/src/routes/admin.ts index e2092a9c61..7994f476f1 100644 --- a/server/src/routes/admin.ts +++ b/server/src/routes/admin.ts @@ -176,17 +176,17 @@ export function createAdminRouter(): { pageRouter: Router; apiRouter: Router } { // Get member insights const insightsQuery = workosUserId - ? `SELECT mi.type_key, it.name as type_name, mi.value + ? `SELECT mit.name as type_key, mit.name as type_name, mi.value FROM member_insights mi - LEFT JOIN insight_types it ON it.key = mi.type_key + LEFT JOIN member_insight_types mit ON mit.id = mi.insight_type_id WHERE mi.workos_user_id = $1 AND mi.is_current = TRUE - ORDER BY mi.confidence DESC, mi.updated_at DESC + ORDER BY mi.confidence DESC, mi.created_at DESC LIMIT 10` - : `SELECT mi.type_key, it.name as type_name, mi.value + : `SELECT mit.name as type_key, mit.name as type_name, mi.value FROM member_insights mi - LEFT JOIN insight_types it ON it.key = mi.type_key + LEFT JOIN member_insight_types mit ON mit.id = mi.insight_type_id WHERE mi.slack_user_id = $1 AND mi.is_current = TRUE - ORDER BY mi.confidence DESC, mi.updated_at DESC + ORDER BY mi.confidence DESC, mi.created_at DESC LIMIT 10`; const insightsResult = await pool.query(insightsQuery, [workosUserId || slackUserId]); @@ -201,8 +201,8 @@ export function createAdminRouter(): { pageRouter: Router; apiRouter: Router } { sm.last_outreach_at, sm.outreach_opt_out, EXTRACT(EPOCH FROM (NOW() - sm.last_outreach_at)) / 86400 as days_since_outreach, - (SELECT COUNT(*) FROM proactive_outreach po WHERE po.slack_user_id = sm.slack_user_id) as total_outreach_count, - (SELECT COUNT(*) FROM proactive_outreach po WHERE po.slack_user_id = sm.slack_user_id AND po.response_received = TRUE) as responses_received + (SELECT COUNT(*) FROM member_outreach mo WHERE mo.slack_user_id = sm.slack_user_id) as total_outreach_count, + (SELECT COUNT(*) FROM member_outreach mo WHERE mo.slack_user_id = sm.slack_user_id AND mo.user_responded = TRUE) as responses_received FROM slack_user_mappings sm WHERE sm.slack_user_id = $1`; const outreachResult = await pool.query(outreachQuery, [slackUserId]);