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
defineLogicFunctionbez nastavení triggeru, doplněná oshouldRunOnVersionUpgrade. - 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žijtepreviousVersion/newVersionk 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
shouldRunOnVersionUpgradezapnuté. - 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) — vdefineApplication()není potřeba na nic odkazovat. - Výchozí
timeoutSecondsje 300, aby umožnil delší úlohy nastavení, jako je naplnění daty. - Nespouští se v dev režimu:
yarn twenty devpř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ě:
definePostInstallLogicFunction
Spouští se po aplikování migrace metadat pracovního prostoru
definePostInstallLogicFunction
Spouští se po aplikování migrace metadat pracovního prostoru
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:Příznak
src/logic-functions/post-install.ts
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 jakoPOST_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.
definePreInstallLogicFunction
Spouští se před aplikováním migrace metadat pracovního prostoru
definePreInstallLogicFunction
Spouští se před aplikováním migrace metadat pracovního prostoru
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