feat: Add PostgreSQL client for FF Nancy data, replacing HTTP API calls with efficient bulk SQL queries.

This commit is contained in:
Michael committed 2026-03-20 13:07:09 +01:00
1 parent b4f583415b
commit 6827257f95
1 file changed
+11 -14
+11 -14
View File
@@ -67,24 +67,21 @@ export interface PgRankingRow {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
/** /**
* Retourne la liste de tous les fournisseurs depuis fouadr1. * Retourne la liste des fournisseurs actifs et non suspendus depuis fouident.
* 1 requête SQL — remplace getFournisseursFromApi(). * 1 requête SQL — remplace getFournisseursFromApi().
*/ */
export async function pgGetFournisseurs(search?: string): Promise<{ code: string; nom: string }[]> { export async function pgGetFournisseurs(search?: string): Promise<{ code: string; nom: string }[]> {
// Jointure avec artfou1 pour ne retourner QUE les fournisseurs ayant des articles
const result = await db.execute(sql` const result = await db.execute(sql`
SELECT DISTINCT SELECT
fa.code, fi.code,
fa.raisonsociale AS nom fi.nom
FROM fouadr1 fa FROM fouident fi
INNER JOIN artfou1 af ON af.code = fa.code WHERE fi.actif = true
WHERE fa.sit_code = '000' AND fi.suspendu = false
AND fa.raisonsociale IS NOT NULL AND fi.code IS NOT NULL
AND fa.code IS NOT NULL AND fi.nom IS NOT NULL
-- Exclure les raisonsociales qui commencent par un chiffre (adresses postales) ${search ? sql`AND (fi.nom ILIKE ${'%' + search + '%'} OR fi.code ILIKE ${'%' + search + '%'})` : sql``}
AND fa.raisonsociale !~ '^\s*\d' ORDER BY fi.nom
${search ? sql`AND (fa.raisonsociale ILIKE ${'%' + search + '%'} OR fa.code ILIKE ${'%' + search + '%'})` : sql``}
ORDER BY fa.raisonsociale
`); `);
return (result.rows as unknown as { code: string; nom: string }[]) return (result.rows as unknown as { code: string; nom: string }[])