MFE Integration
Cos'è il subpath /mfe
@pzeta/postgrest/mfe è un entry point separato del package destinato ai microfrontend. La differenza rispetto al core è la sorgente HTTP: invece di un client Axios o Fetch istanziato dall'MFE, viene utilizzato l'MFEHttpClient fornito dalla shell host tramite useMfeContext() di @pzeta/mfe-contracts.
Questo permette all'MFE di ereditare dalla shell:
- Autenticazione (token, cookie, header
Authorization) - Interceptor (retry, refresh token, redirect su 401)
- Configurazione baseURL e schema PostgREST
- Tracciamento richieste (correlation IDs, telemetry)
// All'interno di un MFE Vue 3
import {
PostgrestMfeService,
BaseMfePostgrestService,
usePostgrestPagination,
useReferenceData,
sanitizePostgrestSearch,
} from '@pzeta/postgrest/mfe'
@pzeta/mfe-contracts è una peer dependency opzionale del package. Installala solo negli MFE che effettivamente importano da /mfe. Le app standalone usano l'entry point principale (@pzeta/postgrest) e non hanno bisogno di mfe-contracts.API esposte
| Export | Tipo | Scopo |
|---|---|---|
PostgrestMfeService | Classe | Service PostgREST a basso livello su MFEHttpClient (get, getOne, post, patch, delete, rpc) |
BaseMfePostgrestService | Classe astratta | Base class CRUD per service di dominio MFE — controparte di BasePostgrestService |
PostgrestApiError | Classe errore | Errori PostgREST con mapping SQLSTATE → messaggi italiani |
PostgrestQuery | Tipo | Query PostgREST (select, filters, order, limit, offset) |
ApiError | Tipo | Re-export del value object di dominio |
usePostgrestPagination | Composable | Stato reattivo paginazione (page, pageSize, offset, totalPages) |
useReferenceData | Composable | Caricamento dati di riferimento (dropdown, lookup tables) con stato reattivo |
sanitizePostgrestSearch | Utility | Sanitizza input utente per filtri like/ilike |
Sotto-pagine
BaseMfePostgrestService
Classe astratta CRUD per service di dominio nei microfrontend — controparte MFE di BasePostgrestService, wrappa PostgrestMfeService e usa MFEHttpClient dalla shell host.
PostgrestMfeService
Service PostgREST a basso livello per microfrontend basato su MFEHttpClient — espone get, getOne, post, patch, delete, rpc con mapping automatico di SQLSTATE in messaggi italiani.
sanitizePostgrestSearch
Utility pura per sanitizzare input utente prima di usarli in filtri PostgREST like/ilike — rimuove caratteri speciali che potrebbero alterare la semantica del filtro o causare query non valide.
usePostgrestPagination
Composable Vue 3 per gestire lo stato di paginazione PostgREST in un MFE — page/pageSize reattivi, offset calcolato, navigazione e reset.
useReferenceData
Composable Vue 3 per caricare dati di riferimento (lookup tables, dropdown) da PostgREST in un MFE — stato reattivo loading/error e cache locale tra le invocazioni di fetch.
Pattern di adozione
// 1. Nel service di dominio dell'MFE
import { useMfeContext } from '@pzeta/mfe-contracts'
import { BaseMfePostgrestService } from '@pzeta/postgrest/mfe'
class ClientiService extends BaseMfePostgrestService<Cliente, number> {
constructor(http = useMfeContext().http) {
super(http, 'anagrafica', 'idanagrafica', 'Cliente')
}
}
// 2. Nel componente Vue
const service = new ClientiService()
const { data, totalRecords } = await service.getAll({
filters: { codtipoanagrafica: 'eq.CLI' },
order: 'denominazione.asc',
limit: 25,
})
Cross-reference
MFEHttpClient— interfaccia HTTP della shell hostuseCrudResource— composable CRUD agnostico di alto livelloBasePostgrestService— controparte standalone
NullLogger
Logger no-op che scarta silenziosamente tutti i messaggi — usato per disabilitare completamente il logging della libreria in produzione o nei test.
BaseMfePostgrestService
Classe astratta CRUD per service di dominio nei microfrontend — controparte MFE di BasePostgrestService, wrappa PostgrestMfeService e usa MFEHttpClient dalla shell host.