import { Pool } from 'pg' import refreshTokenHelper from "../../utils/refreshTokenHelper" const handleFunc = async (event: any) => { // Get PostgreSQL credentials from environment const config = useRuntimeConfig() const dbConfig = { host: config.pgHost, port: parseInt(config.pgPort || '5432'), database: config.pgDatabase, user: config.pgUser, password: config.pgPassword, } // Validate required credentials if (!dbConfig.host || !dbConfig.database || !dbConfig.user || !dbConfig.password) { throw createError({ statusCode: 500, message: 'PostgreSQL credentials not configured. Please set PG_HOST, PG_DATABASE, PG_USER, PG_PASSWORD in .env' }) } const pool = new Pool(dbConfig) try { // Direct SQL query to get products without weight const sql = ` SELECT DISTINCT p.m_product_id AS id, p.name, p.sku, p.weight, p.ad_org_id AS "orgId", o.name AS "orgName" FROM m_product p INNER JOIN m_storage s ON s.m_product_id = p.m_product_id INNER JOIN ad_org o ON o.ad_org_id = p.ad_org_id WHERE p.isactive = 'Y' AND p.isbom = 'N' AND s.qtyonhand > 0 AND p.ad_client_id = 1000000 AND (p.weight IS NULL OR p.weight::numeric = 0) AND bp.isfulfillmentcustomer = 'Y' ORDER BY p.name ` const result = await pool.query(sql) return { records: result.rows } } catch (err: any) { console.error('PostgreSQL query error:', err) throw createError({ statusCode: 500, message: `Database error: ${err.message}` }) } finally { await pool.end() } } export default defineEventHandler(async (event) => { try { return await handleFunc(event) } catch(err: any) { try { let authToken: any = await refreshTokenHelper(event) return await handleFunc(event) } catch(error: any) { console.error('Fatal error in missing-weight:', error) throw error } } })