メインコンテンツへスキップ
Twenty アプリのデータレイヤーとは、アプリがワークスペースに追加するデータのことです。宣言する新しいレコードタイプ、既存オブジェクトに追加するカラム、およびそれらのレコード同士がどのように接続されるかを指します。

このセクションについて

オブジェクト

defineObject — 固有のフィールドを持つ新しいレコードタイプを宣言します。

オブジェクトの拡張

defineField — 標準オブジェクトや他のアプリのオブジェクトにフィールドを追加します。

関連

オブジェクト間の双方向 MANY_TO_ONE / ONE_TO_MANY 接続。

エンティティの概要

SDK はビルド時に AST 解析を通じてこれらを検出するため、ファイル構成は自由です ― 慣例としては src/objects/src/fields/src/indexes/ です。 安定した universalIdentifier UUID が、デプロイをまたいであらゆるものを結び付けます。

インデックス(任意)

アプリは、オブジェクトと一緒にインデックスを同梱しておくことで、繰り返し実行されるクエリを高速に保つことができます。 最も一般的なケースは、頻繁に読み取るステータス列や外部キー列です。
src/indexes/post-card-status.index.ts

一意のインデックス

defineIndex は、単一列と複数列のどちらの一意性でも、isUnique: true を受け付けます。 これは推奨されるプリミティブです — defineField({ isUnique: true }) は非推奨であり、今後のリリースで削除されます。

その他の制約

  • 部分的な WHERE 句は管理者の管理下にあり、アプリ側で宣言することはできません。
  • 各オブジェクトにはカスタムインデックスを最大 10 個まで設定できます(フレームワーク自身のインデックスはカウントされません)。
fields 配列は、Postgres に使わせたい順序に並べてください ― 電話帳のように、最も左の列が先になります。 インデックスにはコストがかかります。テーブルへの書き込みのたびに更新されます。 必要とするクエリがある場合にのみインデックスを追加してください。
Application ConfigRoles & Permissions をお探しですか? それらは、アプリが追加するデータではなくアプリ自体を記述するものであり、Config 配下にあります。 Connections(Linear、GitHub、Slack OAuth)をお探しですか? それらはロジック関数から呼び出されるために存在し、Logic 配下にあります。