feat: add vehicle count column to admin user management
All checks were successful
Deploy to Staging / Build Images (push) Successful in 4m34s
Deploy to Staging / Deploy to Staging (push) Successful in 37s
Deploy to Staging / Verify Staging (push) Successful in 6s
Deploy to Staging / Notify Staging Ready (push) Successful in 5s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
All checks were successful
Deploy to Staging / Build Images (push) Successful in 4m34s
Deploy to Staging / Deploy to Staging (push) Successful in 37s
Deploy to Staging / Verify Staging (push) Successful in 6s
Deploy to Staging / Notify Staging Ready (push) Successful in 5s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Add a new "Vehicles" column to the admin user management table showing the count of active vehicles for each user. Backend changes: - Add vehicleCount to UserWithAdminStatus type - Add SQL subquery to count active vehicles (is_active=true, not deleted) - Add vehicleCount as sortable column option Frontend changes: - Add Vehicles column to desktop table (between Tier and Status) - Add VehicleCountBadge component to mobile user cards - Update ManagedUser type with vehicleCount field 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -176,6 +176,7 @@ export class UserProfileRepository {
|
||||
...this.mapRowToUserProfile(row),
|
||||
isAdmin: !!row.admin_auth0_sub,
|
||||
adminRole: row.admin_role || null,
|
||||
vehicleCount: parseInt(row.vehicle_count, 10) || 0,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -196,6 +197,7 @@ export class UserProfileRepository {
|
||||
createdAt: 'up.created_at',
|
||||
displayName: 'up.display_name',
|
||||
subscriptionTier: 'up.subscription_tier',
|
||||
vehicleCount: 'vehicle_count',
|
||||
};
|
||||
const sortColumn = sortColumnMap[sortBy] || 'up.created_at';
|
||||
|
||||
@@ -234,14 +236,18 @@ export class UserProfileRepository {
|
||||
${whereClause}
|
||||
`;
|
||||
|
||||
// Data query with admin status join
|
||||
// Data query with admin status join and vehicle count
|
||||
const dataQuery = `
|
||||
SELECT
|
||||
up.id, up.auth0_sub, up.email, up.display_name, up.notification_email,
|
||||
up.subscription_tier, up.email_verified, up.onboarding_completed_at,
|
||||
up.deactivated_at, up.deactivated_by, up.created_at, up.updated_at,
|
||||
au.auth0_sub as admin_auth0_sub,
|
||||
au.role as admin_role
|
||||
au.role as admin_role,
|
||||
(SELECT COUNT(*) FROM vehicles v
|
||||
WHERE v.user_id = up.auth0_sub
|
||||
AND v.is_active = true
|
||||
AND v.deleted_at IS NULL) as vehicle_count
|
||||
FROM user_profiles up
|
||||
LEFT JOIN admin_users au ON up.auth0_sub = au.auth0_sub AND au.revoked_at IS NULL
|
||||
${whereClause}
|
||||
@@ -275,7 +281,11 @@ export class UserProfileRepository {
|
||||
up.subscription_tier, up.email_verified, up.onboarding_completed_at,
|
||||
up.deactivated_at, up.deactivated_by, up.created_at, up.updated_at,
|
||||
au.auth0_sub as admin_auth0_sub,
|
||||
au.role as admin_role
|
||||
au.role as admin_role,
|
||||
(SELECT COUNT(*) FROM vehicles v
|
||||
WHERE v.user_id = up.auth0_sub
|
||||
AND v.is_active = true
|
||||
AND v.deleted_at IS NULL) as vehicle_count
|
||||
FROM user_profiles up
|
||||
LEFT JOIN admin_users au ON up.auth0_sub = au.auth0_sub AND au.revoked_at IS NULL
|
||||
WHERE up.auth0_sub = $1
|
||||
|
||||
Reference in New Issue
Block a user