EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
route.ts
Go to the documentation of this file.
1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getStoredAuth } from '@/lib/server/auth';
4
5interface PrinterCartridge {
6 printerId: number;
7 printerName: string;
8 cartridges: number[];
9}
10
11// GET: Retrieve relationships from Fieldpine backend (disabled due to timeout issues)
12export async function GET(request: NextRequest) {
13 try {
14 console.log('[Printers-Cartridges API] Feature disabled due to performance issues');
15
16 // Get authentication
17 const authData = await getStoredAuth();
18 if (!authData || !authData.authenticated) {
19 return NextResponse.json(
20 { error: 'Authentication required' },
21 { status: 401 }
22 );
23 }
24
25 // Return empty array - backend queries time out
26 console.log('[Printers-Cartridges API] Returning empty array (backend timeout issue)');
27 return NextResponse.json({
28 success: true,
29 data: []
30 });
31 } catch (error: any) {
32 console.log('[Printers-Cartridges API] Error:', error.message);
33 return NextResponse.json({
34 success: true,
35 data: []
36 });
37 }
38}
39
40// POST: Save relationships to Fieldpine backend
41export async function POST(request: NextRequest) {
42 try {
43 console.log('[Printers-Cartridges API] Saving to Fieldpine backend...');
44
45 // Get authentication
46 const authData = await getStoredAuth();
47 if (!authData || !authData.authenticated) {
48 return NextResponse.json(
49 { error: 'Authentication required' },
50 { status: 401 }
51 );
52 }
53
54 const body = await request.json();
55 const { relationships } = body;
56
57 if (!Array.isArray(relationships)) {
58 return NextResponse.json(
59 { success: false, error: 'Invalid relationships data' },
60 { status: 400 }
61 );
62 }
63
64 // For now, we'll use a simple approach:
65 // 1. Delete all existing relationships
66 // 2. Insert the new ones via BUCK
67
68 try {
69 // Delete all existing records using BUCK
70 await fieldpineServerApi.apiCall('/GNAP/j/buck', {
71 method: 'DELETE',
72 params: { '3': 'retailmax.elink.printercartridge' },
73 cookie: authData.apiKey,
74 useOpenApi: false
75 });
76 } catch (e) {
77 // Ignore delete errors - table may be empty
78 console.log('[Printers-Cartridges API] Delete completed or table was empty');
79 }
80
81 // Insert new relationships as rows
82 const rows: any[] = [];
83 for (const rel of relationships) {
84 for (const cartridgeId of rel.cartridges) {
85 // BUCK DATS format: array of values [printerid, cartridgeid]
86 rows.push([rel.printerId, cartridgeId]);
87 }
88 }
89
90 if (rows.length > 0) {
91 try {
92 // Insert all rows in one BUCK call
93 await fieldpineServerApi.apiCall('/GNAP/j/buck', {
94 method: 'POST',
95 params: { '3': 'retailmax.elink.printercartridge' },
96 body: { DATS: rows },
97 cookie: authData.apiKey,
98 useOpenApi: false
99 });
100
101 console.log(`[Printers-Cartridges API] Saved ${rows.length} relationships to backend`);
102 } catch (err) {
103 console.error('[Printers-Cartridges API] Error saving relationships:', err);
104 throw err;
105 }
106 }
107
108 return NextResponse.json({
109 success: true,
110 message: 'Relationships saved to backend successfully'
111 });
112 } catch (error: any) {
113 console.error('[Printers-Cartridges API] Error saving:', error);
114 return NextResponse.json(
115 { success: false, error: error.message || 'Failed to save relationships' },
116 { status: 500 }
117 );
118 }
119}