mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-18 12:46:32 +02:00
feat: Introduce PostgreSQL client for bulk data retrieval and integrate it into product grid data fetching actions.
This commit is contained in:
1 parent
58d467a7ea
commit
4dd1b5f7c7
3 files changed
+36
-9
No files matched your search
@@ -1,14 +1,15 @@
|
||||
"use server";
|
||||
|
||||
import { getFournisseursFromApi, getSitesFromApi } from "@/lib/api-ff-client";
|
||||
import { getSitesFromApi } from "@/lib/api-ff-client";
|
||||
import { pgGetFournisseurs } from "@/lib/pg-ff-client";
|
||||
import { getProductRows } from "./api/get-product-rows";
|
||||
import type { ProductRow, GridFilters } from "@/types/grid";
|
||||
|
||||
/**
|
||||
* Get the list of all suppliers from the FF Nancy API.
|
||||
* Get the list of all suppliers from PostgreSQL (fouadr1).
|
||||
*/
|
||||
export async function getFournisseurs() {
|
||||
return getFournisseursFromApi();
|
||||
return pgGetFournisseurs();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
pgGetStockByFournisseur,
|
||||
pgGetRankingByFournisseur,
|
||||
pgGetCommandesByFournisseur,
|
||||
type PgStockRow,
|
||||
} from "@/lib/pg-ff-client";
|
||||
import { db } from "@/db";
|
||||
import { sessionSnapshots } from "@/db/schema";
|
||||
@@ -38,12 +39,12 @@ export async function getProductRows(input: GetProductRowsInput): Promise<Produc
|
||||
rankingResult,
|
||||
commandesMap,
|
||||
] = await Promise.all([
|
||||
pgGetArticlesByFournisseur(codeFournisseur),
|
||||
pgGetMensuelByFournisseur(codeFournisseur, dateDebut, dateFin),
|
||||
pgGetGammesByFournisseur(codeFournisseur),
|
||||
pgGetStockByFournisseur(codeFournisseur),
|
||||
pgGetRankingByFournisseur(codeFournisseur),
|
||||
pgGetCommandesByFournisseur(codeFournisseur),
|
||||
pgGetArticlesByFournisseur(codeFournisseur).catch(e => { console.error("[getProductRows] pgGetArticlesByFournisseur ERROR:", e); return []; }),
|
||||
pgGetMensuelByFournisseur(codeFournisseur, dateDebut, dateFin).catch(e => { console.error("[getProductRows] pgGetMensuelByFournisseur ERROR:", e); return []; }),
|
||||
pgGetGammesByFournisseur(codeFournisseur).catch(e => { console.error("[getProductRows] pgGetGammesByFournisseur ERROR:", e); return new Map<string, string>(); }),
|
||||
pgGetStockByFournisseur(codeFournisseur).catch(e => { console.error("[getProductRows] pgGetStockByFournisseur ERROR:", e); return new Map<string, PgStockRow[]>(); }),
|
||||
pgGetRankingByFournisseur(codeFournisseur).catch(e => { console.error("[getProductRows] pgGetRankingByFournisseur ERROR:", e); return { rankings: new Map(), totalRankedProducts: 0 }; }),
|
||||
pgGetCommandesByFournisseur(codeFournisseur).catch(e => { console.error("[getProductRows] pgGetCommandesByFournisseur ERROR:", e); return new Map<string, number>(); }),
|
||||
]);
|
||||
|
||||
const { rankings: rankingMap, totalRankedProducts } = rankingResult;
|
||||
|
||||
@@ -59,6 +59,31 @@ export interface PgRankingRow {
|
||||
ranking_mag_qte?: number;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 0. Liste des fournisseurs
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Retourne la liste de tous les fournisseurs depuis fouadr1.
|
||||
* 1 requête SQL — remplace getFournisseursFromApi().
|
||||
*/
|
||||
export async function pgGetFournisseurs(search?: string): Promise<{ code: string; nom: string }[]> {
|
||||
const result = await db.execute(sql`
|
||||
SELECT DISTINCT
|
||||
fa.code,
|
||||
fa.raisonsociale AS nom
|
||||
FROM fouadr1 fa
|
||||
WHERE fa.sit_code = '000'
|
||||
AND fa.raisonsociale IS NOT NULL
|
||||
AND fa.code IS NOT NULL
|
||||
${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 }[])
|
||||
.filter(r => r.code && r.nom);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// 1. Articles du fournisseur
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user