MFE Integration

Entry point @pzeta/postgrest/mfe per microfrontend — service e composables Vue 3 basati su MFEHttpClient di @pzeta/mfe-contracts invece di Axios/Fetch diretti.

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

ExportTipoScopo
PostgrestMfeServiceClasseService PostgREST a basso livello su MFEHttpClient (get, getOne, post, patch, delete, rpc)
BaseMfePostgrestServiceClasse astrattaBase class CRUD per service di dominio MFE — controparte di BasePostgrestService
PostgrestApiErrorClasse erroreErrori PostgREST con mapping SQLSTATE → messaggi italiani
PostgrestQueryTipoQuery PostgREST (select, filters, order, limit, offset)
ApiErrorTipoRe-export del value object di dominio
usePostgrestPaginationComposableStato reattivo paginazione (page, pageSize, offset, totalPages)
useReferenceDataComposableCaricamento dati di riferimento (dropdown, lookup tables) con stato reattivo
sanitizePostgrestSearchUtilitySanitizza input utente per filtri like/ilike

Sotto-pagine

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