Přejít na hlavní obsah
Instalační hooky jsou speciální logické funkce, které se spouštějí během životního cyklu instalace nebo upgradu. Sdílí stejný runtime handleru jako běžné logické funkce a přijímají InstallPayload ({ previousVersion?: string; newVersion: string }previousVersion je při čisté instalaci undefined), ale deklarují se pomocí vlastních definičních funkcí a fungují mimo běžný model triggerů (HTTP, cron, databázové události). Každá aplikace může definovat nanejvýš jednu pre-install a nanejvýš jednu post-install funkci. Sestavení manifestu skončí chybou, pokud je zjištěno více než jedno z nich.

Na první pohled

Pravidlo: výchozí volbou je post-install. Po pre-install sáhněte pouze tehdy, když je samotná migrace destruktivní a potřebujete zachytit předchozí stav, než zmizí.

Chování sdílené oběma hooky

  • Konfigurace je konfigurace defineLogicFunction bez nastavení triggeru, doplněná o shouldRunOnVersionUpgrade.
  • Kdy se spouští: ve výchozím nastavení pouze při čistých instalacích. Nastavte shouldRunOnVersionUpgrade: true, aby se spouštěl i při aktualizacích. Použijte previousVersion / newVersion k větvení podle cesty aktualizace.
  • Idempotence je důležitá: asynchronní post-install se může spouštět opakovaně a kterýkoli hook se znovu spouští při aktualizacích, když je shouldRunOnVersionUpgrade zapnuté.
  • Běžné prostředí logické funkce (APPLICATION_ID, APP_ACCESS_TOKEN, API_URL) je injektováno, takže můžete volat Twenty API s tokenem své aplikace.
  • Hook je při sestavení automaticky připojen k manifestu aplikace (preInstallLogicFunction / postInstallLogicFunction) — v defineApplication() není potřeba na nic odkazovat.
  • Výchozí timeoutSeconds je 300, aby umožnil delší úlohy nastavení, jako je naplnění daty.
  • Nespouští se v dev režimu: yarn twenty dev přeskočí instalační flow a soubory synchronizuje přímo, takže se hooky v tomto režimu nikdy nespustí. Místo toho je spouštějte ručně:
Spouští se, jakmile vaše aplikace dokončí instalaci: metadata jsou synchronizovaná, klient SDK vygenerovaný a nové schéma je možné dotazovat. Příklad — při čisté instalaci naplňte výchozí záznam:
src/logic-functions/post-install.ts
Příznak shouldRunSynchronously řídí model spuštění:
  • false (výchozí) — zařazeno do fronty zpráv (retryLimit: 3) a spuštěno workerem. Odezva instalace se vrátí, jakmile je úloha zařazena do fronty. Používejte pro dlouho běžící práci — naplňování velkých datových sad, pomalá API třetích stran.
  • true — spuštěno inline během instalačního flow. Instalační požadavek blokuje, dokud handler neskončí; vyvolaná chyba se projeví pro volajícího jako POST_INSTALL_ERROR (žádné opakované pokusy). Používejte pro rychlou práci, která musí být dokončena před odpovědí. Migrace už je v tomto bodě aplikovaná, takže selhání nevrací změny schématu zpět — pouze předá chybu dál.
Spouští se před migrací metadat, nad předchozím schématem — vhodné místo pro zálohování dat, která by migrace ztratila, nebo pro odmítnutí rizikové aktualizace. Před spuštěním server provede čistě aditivní „zjednodušenou synchronizaci“, která zaregistruje pouze pre-install funkci nové verze; vše ostatní — objekty, pole a data předchozí verze — zůstává při běhu vašeho handleru nedotčeno.Pre-install je vždy synchronní a blokuje instalaci. Pokud obslužná funkce vyvolá výjimku, instalace se přeruší ještě před jakoukoli změnou schématu — pracovní prostor zůstane na předchozí verzi v konzistentním stavu. Je to záměrné: pre-install je vaše poslední šance odmítnout rizikovou aktualizaci.Příklad — zkopírujte hodnoty staršího pole dříve, než ho migrace odstraní:
src/logic-functions/pre-install.ts