76 lines
3.0 KiB
TypeScript
76 lines
3.0 KiB
TypeScript
|
|
import { requireAuth } from '~/server/utils/auth';
|
||
|
|
import { getBerthById } from '~/server/utils/nocodb';
|
||
|
|
|
||
|
|
export default defineEventHandler(async (event) => {
|
||
|
|
console.log('[debug-berth-interested-parties] Request received');
|
||
|
|
|
||
|
|
// Check authentication
|
||
|
|
await requireAuth(event);
|
||
|
|
|
||
|
|
try {
|
||
|
|
// Get a berth ID from query params
|
||
|
|
const query = getQuery(event);
|
||
|
|
const berthId = query.id as string;
|
||
|
|
|
||
|
|
if (!berthId) {
|
||
|
|
throw createError({
|
||
|
|
statusCode: 400,
|
||
|
|
statusMessage: 'Berth ID is required'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('[debug-berth-interested-parties] Fetching berth:', berthId);
|
||
|
|
|
||
|
|
// First, get the raw berth data without population
|
||
|
|
const config = useRuntimeConfig().nocodb;
|
||
|
|
const rawBerthResponse = await $fetch(`${config.url}/api/v2/tables/mczgos9hr3oa9qc/records/${berthId}`, {
|
||
|
|
headers: {
|
||
|
|
"xc-token": config.token,
|
||
|
|
},
|
||
|
|
params: {
|
||
|
|
fields: '*'
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
console.log('[debug-berth-interested-parties] Raw berth data:', JSON.stringify(rawBerthResponse, null, 2));
|
||
|
|
|
||
|
|
// Check the structure of Interested Parties
|
||
|
|
const interestedParties = (rawBerthResponse as any)['Interested Parties'];
|
||
|
|
console.log('[debug-berth-interested-parties] Raw Interested Parties structure:', JSON.stringify(interestedParties, null, 2));
|
||
|
|
console.log('[debug-berth-interested-parties] Interested Parties type:', typeof interestedParties);
|
||
|
|
console.log('[debug-berth-interested-parties] Is Array:', Array.isArray(interestedParties));
|
||
|
|
|
||
|
|
if (Array.isArray(interestedParties) && interestedParties.length > 0) {
|
||
|
|
console.log('[debug-berth-interested-parties] First party:', JSON.stringify(interestedParties[0], null, 2));
|
||
|
|
console.log('[debug-berth-interested-parties] First party type:', typeof interestedParties[0]);
|
||
|
|
console.log('[debug-berth-interested-parties] First party keys:', Object.keys(interestedParties[0] || {}));
|
||
|
|
}
|
||
|
|
|
||
|
|
// Now try the populated version
|
||
|
|
const populatedBerth = await getBerthById(berthId);
|
||
|
|
console.log('[debug-berth-interested-parties] Populated Interested Parties:', JSON.stringify(populatedBerth['Interested Parties'], null, 2));
|
||
|
|
|
||
|
|
return {
|
||
|
|
berthId,
|
||
|
|
raw: {
|
||
|
|
interestedParties: interestedParties,
|
||
|
|
type: typeof interestedParties,
|
||
|
|
isArray: Array.isArray(interestedParties),
|
||
|
|
length: Array.isArray(interestedParties) ? interestedParties.length : 0,
|
||
|
|
firstItem: Array.isArray(interestedParties) && interestedParties.length > 0 ? interestedParties[0] : null,
|
||
|
|
firstItemKeys: Array.isArray(interestedParties) && interestedParties.length > 0 && interestedParties[0] ? Object.keys(interestedParties[0]) : []
|
||
|
|
},
|
||
|
|
populated: {
|
||
|
|
interestedParties: populatedBerth['Interested Parties'],
|
||
|
|
success: !!populatedBerth['Interested Parties']
|
||
|
|
}
|
||
|
|
};
|
||
|
|
} catch (error: any) {
|
||
|
|
console.error('[debug-berth-interested-parties] Error:', error);
|
||
|
|
throw createError({
|
||
|
|
statusCode: 500,
|
||
|
|
statusMessage: error.message || 'Failed to debug berth interested parties'
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|