fix(admin): key tunnels by user_id, server-side initial list load, full-scan user search
This commit is contained in:
+3
-3
@@ -6,7 +6,7 @@ import { formatBytes, formatDate } from '@/lib/format';
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
type OverQuotaRow = {
|
||||
id: string;
|
||||
user_id: string;
|
||||
subdomain: string;
|
||||
bytes_used: number;
|
||||
quota_bytes: number;
|
||||
@@ -26,7 +26,7 @@ export default async function AdminOverviewPage() {
|
||||
// Over-quota tunnels (compute in memory).
|
||||
const { data: tunnelsData } = await admin
|
||||
.from('tunnels')
|
||||
.select('id, subdomain, bytes_used, quota_bytes');
|
||||
.select('user_id, subdomain, bytes_used, quota_bytes');
|
||||
const overQuota = ((tunnelsData ?? []) as OverQuotaRow[])
|
||||
.filter((t) => t.quota_bytes > 0 && t.bytes_used >= t.quota_bytes)
|
||||
.slice(0, 5);
|
||||
@@ -100,7 +100,7 @@ export default async function AdminOverviewPage() {
|
||||
</thead>
|
||||
<tbody>
|
||||
{overQuota.map((t) => (
|
||||
<tr key={t.id}>
|
||||
<tr key={t.user_id}>
|
||||
<td>{t.subdomain}</td>
|
||||
<td>
|
||||
{formatBytes(t.bytes_used)} / {formatBytes(t.quota_bytes)}
|
||||
|
||||
Reference in New Issue
Block a user