InstallPayload ({ previousVersion?: string; newVersion: string } — previousVersion je při čisté instalaci undefined); hook pro odinstalaci přijímá UninstallPayload ({ version?: string } — verze, která se odstraňuje).
Každá aplikace smí definovat nanejvýš jeden hook každého typu (předinstalační, poinstalační, odinstalační). Sestavení manifestu skončí chybou, pokud je zjištěn více než jeden hook daného typu.
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
Odinstalační hook
defineUninstallLogicFunction deklaruje hook, který se spustí, když uživatel odinstaluje vaši aplikaci. Spustí se předtím, než jsou odstraněna metadata, data a kód aplikace — jakmile se spustí migrační skript pro smazání, nezbude nic, co by se dalo vykonat — takže váš handler může stále dotazovat objekty a záznamy aplikace. Použijte ho k úklidu externích prostředků: zrušení přidělených API prostředků, smazání zbývajících botů, zrušení webhooků.
Poznámky:
- Hook pracuje v režimu best effort: běží synchronně, ale chyba se pouze zapíše do logu a nikdy neblokuje odinstalaci — úklid nesmí znemožnit odebrání aplikace.
- Přijímá
UninstallPayload({ version?: string }— verze, která se odstraňuje). - Nespouští se, pokud je neúspěšná čistá instalace vrácena zpět — aplikace nikdy nedokončila instalaci.
- Hook nemůže běžet poté, co je aplikace pryč, takže externí úklid, který závisí na datech aplikace (např. ID botů uložená v záznamech), patří sem, ne do externí naplánované úlohy.
- Stejně jako instalační hooky se nespouští v dev módu — místo toho ho vyvolejte ručně:
src/logic-functions/uninstall.ts