Skip to main content
Kurulum kancaları, kurulum, yükseltme veya kaldırma yaşam döngüsü sırasında çalışan özel mantık işlevleridir. Bunlar, normal mantık işlevleri ile aynı işleyici çalışma zamanını paylaşır, ancak kendi tanımlama işlevleriyle bildirilirler ve normal tetikleyici modelinin (HTTP, cron, veritabanı olayları) dışında yaşarlar. Kurulum kancaları bir InstallPayload alır ({ previousVersion?: string; newVersion: string } — yeni bir kurulumda previousVersion, undefined olur); kaldırma kancası ise bir UninstallPayload alır ({ version?: string } — kaldırılan sürüm). Her uygulama, her bir kanca türünden (kurulum öncesi, kurulum sonrası, kaldırma) en fazla bir tane tanımlayabilir. Her türden birden fazla tespit edilirse manifest derlemesi hata verir.

Bir bakışta

Kural: varsayılan olarak post-install kullanın. Yalnızca geçişin kendisi yıkıcıysa ve önceki durum yok olmadan önce onu yakalamanız gerekiyorsa kurulum öncesine başvurun.

Her iki kanca tarafından paylaşılan davranış

  • Yapılandırma, tetikleyici ayarları çıkarılmış bir defineLogicFunction yapılandırmasıdır ve buna ek olarak shouldRunOnVersionUpgrade içerir.
  • Ne zaman çalışır: varsayılan olarak yalnızca ilk kurulumlarda. Yükseltmelerde de çalışması için shouldRunOnVersionUpgrade: true olarak ayarlayın. Yükseltme yoluna göre dallanmak için previousVersion / newVersion kullanın.
  • İdempotans önemlidir: asenkron post-install yeniden denenebilir ve shouldRunOnVersionUpgrade açıkken her iki kanca da yükseltmelerde yeniden çalıştırılır.
  • Alışıldık mantık işlevi ortamı (APPLICATION_ID, APP_ACCESS_TOKEN, API_URL) enjekte edilir, böylece Twenty API’sini uygulamanızın jetonuyla çağırabilirsiniz.
  • Kanca, derleme zamanında otomatik olarak uygulama manifestine (preInstallLogicFunction / postInstallLogicFunction) eklenir — defineApplication() içinde referans verilecek bir şey yoktur.
  • Varsayılan timeoutSeconds, veri tohumlama gibi daha uzun kurulum görevlerine izin vermek için 300 olarak ayarlanmıştır.
  • Geliştirme modunda yürütülmez: yarn twenty dev kurulum akışını atlar ve dosyaları doğrudan senkronize eder, bu nedenle kancalar burada asla çalışmaz. Bunları bunun yerine manuel olarak tetikleyin:
Uygulamanızın kurulumu tamamlandıktan sonra bir kez çalışır: üstveri senkronize edilmiştir, SDK istemcisi oluşturulmuştur, yeni şema sorgulanabilir durumdadır. Örnek — ilk kurulumlarda varsayılan bir kaydı tohumlamak:
src/logic-functions/post-install.ts
shouldRunSynchronously bayrağı yürütme modelini kontrol eder:
  • false (varsayılan) — mesaj kuyruğuna alınır (retryLimit: 3) ve bir worker tarafından çalıştırılır. Kurulum yanıtı, iş kuyruğa alınır alınmaz döner. Uzun süreli işler için kullanın — büyük veri kümelerinin tohumlanması, yavaş üçüncü taraf API’leri.
  • true — kurulum akışı sırasında satır içi olarak yürütülür. Kurulum isteği, işleyici bitene kadar bloke olur; fırlatılan bir hata, çağırana POST_INSTALL_ERROR olarak yansır (yeniden deneme yoktur). Hızlı ve yanıt dönmeden önce mutlaka tamamlanması gereken işler için kullanın. Bu noktada geçiş zaten uygulanmıştır, bu nedenle bir hata şema değişikliklerini geri almaz — yalnızca hatayı görünür kılar.
Üstveri geçişinden önce, önceki şemaya karşı çalışır — bir geçişin kaybedeceği verileri yedeklemek veya riskli bir yükseltmeyi reddetmek için doğru yerdir. Çalıştırmadan önce, sunucu yalnızca ekleyici bir “indirgenmiş eşitleme” yürütür; bu, yalnızca yeni sürümün kurulum öncesi işlevini kaydeder, diğer her şey — önceki sürümün nesneleri, alanları ve verileri — işleyiciniz çalıştığında dokunulmadan kalır.Kurulum öncesi her zaman senkrondur ve kurulumu bloke eder. İşleyici bir hata fırlatırsa, herhangi bir şema değişikliğinden önce kurulum iptal edilir — çalışma alanı, tutarlı bir durumda önceki sürümde kalır. Bu kasıtlıdır: kurulum öncesi, riskli bir yükseltmeyi reddetmek için son şansınızdır.Örnek — geçiş onu düşürmeden önce eski bir alanın değerlerini kopyalamak:
src/logic-functions/pre-install.ts

Kaldırma kancası

defineUninstallLogicFunction, bir kullanıcı uygulamanızı kaldırdığında çalışan bir kancayı bildirir. Bu kanca, uygulamanın üst verileri, verileri ve kodu kaldırılmadan önce çalışır — silme geçişi (migration) çalıştıktan sonra çalıştırılacak hiçbir şey kalmaz — bu nedenle işleyiciniz uygulamanın nesnelerini ve kayıtlarını hâlâ sorgulayabilir. Bunu harici kaynakların temizliği için kullanın: API kaynaklarının tahsisini geri alın, kalan botları silin, web kancalarını (webhook) iptal edin. Notlar:
  • Kanca, en iyi gayret esasına göre çalışır: senkron olarak çalışır, ancak bir hata günlüğe kaydedilir ve kaldırmayı asla engellemez — temizleme, bir uygulamanın kaldırılamaz hale gelmesine neden olmamalıdır.
  • Kaldırma kancası, UninstallPayload alır ({ version?: string } — kaldırılan sürüm).
  • Başarısız olan yeni bir kurulum geri alındığında çalışmaz — uygulama kurulumunu hiçbir zaman tamamlamamıştır.
  • Kanca, uygulama kaldırıldıktan sonra çalışamaz; bu nedenle, uygulama verilerine bağlı olan harici temizlik (örneğin kayıtlarda saklanan bot kimlikleri) harici zamanlanmış bir işte değil, burada yapılmalıdır.
  • Kurulum kancalarında olduğu gibi, bu kanca da geliştirme modunda çalıştırılmaz — bunun yerine manuel olarak tetikleyin:
src/logic-functions/uninstall.ts