diff --git a/app/admin/sync/page.tsx b/app/admin/sync/page.tsx
index b62e6e7..ea1dbb3 100644
--- a/app/admin/sync/page.tsx
+++ b/app/admin/sync/page.tsx
@@ -11,7 +11,8 @@ import SyncDashboard from '@/components/admin/SyncDashboard';
import SyncHistoryTable from '@/components/admin/SyncHistoryTable';
import { EntityType } from '@/lib/types/sync';
import { Button } from '@/components/ui/button';
-import { ArrowLeft, Home } from 'lucide-react';
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
+import { ArrowLeft, Home, Activity, History } from 'lucide-react';
import Link from 'next/link';
export default function AdminSyncPage() {
@@ -82,11 +83,27 @@ export default function AdminSyncPage() {
isSyncing={isSyncing}
/>
- {/* Sync Dashboard */}
-
-
- {/* Sync History */}
-
+ {/* Tabs for Sync Status and History */}
+
+
+
+
+ Sync Status
+
+
+
+ Sync History
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/app/api/sync/history/route.ts b/app/api/sync/history/route.ts
index 68790e4..a42c2f9 100644
--- a/app/api/sync/history/route.ts
+++ b/app/api/sync/history/route.ts
@@ -12,6 +12,7 @@ export async function GET(request: NextRequest) {
try {
const searchParams = request.nextUrl.searchParams;
const limit = parseInt(searchParams.get('limit') || '50');
+ const offset = parseInt(searchParams.get('offset') || '0');
const entityType = searchParams.get('entityType') as EntityType | null;
// Initialize Autotask client (needed for service instantiation)
@@ -28,7 +29,8 @@ export async function GET(request: NextRequest) {
// Get sync history
const history = await syncService.getSyncHistory(
limit,
- entityType || undefined
+ entityType || undefined,
+ offset
);
return NextResponse.json({
diff --git a/components/admin/SyncHistoryTable.tsx b/components/admin/SyncHistoryTable.tsx
index f161e26..837cf1e 100644
--- a/components/admin/SyncHistoryTable.tsx
+++ b/components/admin/SyncHistoryTable.tsx
@@ -46,7 +46,8 @@ export default function SyncHistoryTable({ refreshKey }: SyncHistoryTableProps)
const fetchHistory = async () => {
try {
setLoading(true);
- const response = await fetch(`/api/sync/history?limit=${limit}`);
+ const offset = (page - 1) * limit;
+ const response = await fetch(`/api/sync/history?limit=${limit}&offset=${offset}`);
if (response.ok) {
const data = await response.json();
setHistory(data.history || []);
diff --git a/lib/services/sync-service.ts b/lib/services/sync-service.ts
index ddca271..b5d3bc4 100644
--- a/lib/services/sync-service.ts
+++ b/lib/services/sync-service.ts
@@ -352,11 +352,13 @@ export class SyncService {
* Get sync history
* @param limit Number of records to return
* @param entityType Optional entity type filter
+ * @param offset Offset for pagination
* @returns Array of sync history records
*/
async getSyncHistory(
limit: number = 50,
- entityType?: EntityType
+ entityType?: EntityType,
+ offset: number = 0
): Promise {
let query = `
SELECT *
@@ -370,8 +372,8 @@ export class SyncService {
params.push(entityType);
}
- query += ` ORDER BY started_at DESC LIMIT $${params.length + 1}`;
- params.push(limit);
+ query += ` ORDER BY started_at DESC LIMIT $${params.length + 1} OFFSET $${params.length + 2}`;
+ params.push(limit, offset);
const result = await postgresClient.query(query, params);
return result.rows;