SQL Connect 構成ファイル リファレンス

Firebase CLI を使用すると、Firebase プロジェクトをローカルの バージョン管理可能なプロジェクト ディレクトリで管理できます。これには、プロジェクト内の SQL Connect サービス、それらのサービスのコネクタ、 スキーマ、クエリ、ミューテーション ソースなどのリソースが含まれます。CLI を使用して、 エミュレータをインストールして操作することもできます。Firebase SQL ConnectCLI は、 コンソールでの作業に代わる効率的な方法です。Firebase

プライベート プレビュー プログラム用の Firebase CLI の試験運用版のインストール手順と、SQL Connect-関連の CLI コマンドについては、Firebase CLI リファレンスをご覧ください

このリファレンス ガイドでは、以下について説明します。

  • SQL Connect プロジェクト 構成ファイルの firebase.json 固有のエントリ。
  • SQL Connect 構成を dataconnect.yamlconnector.yaml に。

Firebase プロジェクト構成ファイル

firebase.json 構成リファレンス

dataconnect キーを使用して、プロジェクトで 1 つ以上の SQL Connect サービスを構成します。

dataconnect: {
   source: string // Path to the directory containing the dataconnect.yaml service file.
}

dataconnect.yaml 構成リファレンス

dataconnect.yaml ファイルには、アプリケーション スキーマ ソース、コネクタ ソースの場所、データソース接続情報に関する構成情報が保存されます。このファイルは、 Firebase CLI のプロジェクト ディレクトリ指定子としても機能します。

schemaValidation キーは、デプロイ時にスキーマが移行されるときに実行されるスキーマ検証のレベルを制御します。値が設定されていない場合、dataconect:sql:migrate コマンドは互換性のある変更を適用し、厳密な変更を実行する前に確認を求めます。設定されている場合、動作は次のようになります。

  • STRICT モード。アプリケーション スキーマをデプロイするには、データベース スキーマがアプリケーション スキーマと完全に一致している必要があります。SQL Connect スキーマで使用されていないテーブルまたは列は、データベースから削除されます。SQL Connect
  • COMPATIBLE モード。アプリケーション スキーマをデプロイするには、データベース スキーマがアプリケーション スキーマと互換性がある必要があります。追加の変更は省略可能です。互換性とは、スキーマ移行が記述したアプリケーション スキーマに基づいていることを意味します。アプリケーション スキーマで使用されていないデータベース内の要素は変更されません。 そのため、デプロイ後、バックエンドに未使用のスキーマ、テーブル、列が含まれる可能性があります。

このファイルの他のキーの値については、以下のコメントで説明します。

# The top-level Firebase SQL Connect YAML file.

# The Firebase SQL Connect API version to target.
# Optional. Defaults to the latest version.
specVersion: string

# The ID of the Firebase SQL Connect service resource.
# Required.
serviceId: string

# The location of the Firebase SQL Connect service.
# Required.
location: string

# Required.
schema:
  # Relative path to directory for schema definitions.
  # Recursively loads all .gql files in this directory.
  # Optional. If not present, defaults to ./schema.
  source: string
  # Datasource connection information.
  # Required.
  datasource:
    # Required.
    postgresql:
      # The name of the PostgreSQL database.
      # Required.
      database: string
      cloudSql:
        # The ID of the Cloud SQL instance resource.
        # Required.
        instanceId: string
        # Schema validation mode for schema migrations.
        # Defaults to unspecified/commented out, meaning you are prompted to
        # review all changes during migration.
        # If desired, uncomment and indicate one of "STRICT" or "COMPATIBLE".
        schemaValidation: string

# Required.
# Relative paths to directories for connector definitions.
# Recursively loads all .gql files in the listed directories.
# All directories specified MUST contain a connector.yaml file.
connectorDirs: [string]

YAML ファイルは、デフォルト(構成可能)のディレクトリ構造を想定しています。

./(project root)
   /dataconnect
      dataconnect.yaml
      /schema
        *.gql
      /example
        connector.yaml
        *.gql

connector.yaml 構成リファレンス

connector.yaml を使用して、デフォルトの認証モードと SDK 生成オプションを構成します。

# The connector-level YAML file.

# Required. The connector name of the Firebase SQL Connect connector resource.
connectorId: string

# Optional. If not specified, no generated libraries (i.e. type-safe SDKs) will
# be generated.
generate:
    # Optional.
    javascriptSdk:
        # Path to the directory that will be updated with the latest generated
        # web TypeScript SDK.
        # Required.
        outputDir: string
        # Name of the Javascript package to be created.
        # Required. Example: @dataconnect/generated
        package: string
        # Path to your package.json directory. If specified, the new generated
        # SDK will be installed in this path.
        # Optional. If not provided, the package will not be auto-installed for
        # you.
        packageJsonDir: string
        # Enable React framework bindings.
        # Optional. Default to false.
        react: Boolean
        # Enable Angular framework bindings.
        # Optional. Default to false.
        angular: Boolean
        # Enable and configure client-side caching for the generated SDK.
        # Optional. If the `clientCache` key is not present, caching is disabled.
        clientCache:
            # The maximum age allowed for cached results before fetching fresh
            # values. A value of "0" means that responses are cached, but the
            # client SDK will always fetch fresh values; the cached values are
            # only used when CACHE_ONLY is specified to executeQuery() and as the
            # initial result returned from subscribe().
            # Examples: "0", "30s", "1h30m"
            # Optional. Default: "0"
            maxAge: string
            # Configures how results are to be cached.
            # Optional. Only "memory" is allowed for JavaScript SDKs.
            storage: string
    # Optional.
    dartSdk:
        # Path to the directory that will be updated with the latest generated
        # Flutter Dart SDK.
        # Required.
        outputDir: string
        # Name of the Dart package to be created.
        # Required. Example: "dataconnect_generated"
        package: string
        # Enable and configure client-side caching for the generated SDK.
        # Optional. If the `clientCache` key is not present, caching is disabled.
        clientCache:
            # The maximum age allowed for cached results before fetching fresh
            # values. A value of "0" means that responses are cached, but the
            # client SDK will always fetch fresh values; the cached values are
            # only used when CACHE_ONLY is specified to execute() and as the
            # initial result returned from subscribe().
            # Examples: "0", "30s", "1h30m"
            # Optional. Default: "0"
            maxAge: string
            # Configures whether results are to be cached in persistent storage
            # or in memory ("persistent" or "memory").
            # Optional.
            # Default: "persistent" for Android and iOS targets, "memory" for web.
            storage: string
    # Optional.
    kotlinSdk:
        # Path to the directory that will be updated with the latest generated
        # Android SDK.
        # Required.
        outputDir: string
        # Name of the package to be created.
        # Required. Example: com.google.firebase.dataconnect.generated
        package: string
        # Enable and configure client-side caching for the generated SDK.
        # Optional. If the `clientCache` key is not present, caching is disabled.
        clientCache:
            # The maximum age allowed for cached results before fetching fresh
            # values. A value of "0" means that responses are cached, but the
            # client SDK will always fetch fresh values; the cached values are
            # only used when CACHE_ONLY is specified to execute().
            # Examples: "0", "30s", "1h30m"
            # Optional. Default: "0"
            maxAge: string
            # Configures whether results are to be cached in persistent storage
            # or in memory ("persistent" or "memory").
            # Optional. Default: persistent
            storage: string
    # Optional.
    adminNodeSdk:
        # Path to the directory that will be updated with the latest generated
        # Node Admin SDK.
        # Required.
        outputDir: string
        # Path to your package.json directory. If specified, the new generated
        # SDK will be installed in this path.
        # Optional. If not provided, the package will not be auto-installed for
        # you.
        packageJsonDir: string
        # Name of the package to be created (for example: @dataconnect/admin-generated).
        # Required.
        package: string
    # Optional.
    swiftSdk:
        # Path to the directory that will be updated with the latest generated
        # iOS Swift SDK.
        # Required.
        outputDir: string
        # Name of the Swift package to be created.
        # Required. Example: "FirebaseDataConnectGenerated"
        package: string
        # Enable and configure client-side caching for the generated SDK.
        # Optional. If the `clientCache` key is not present, caching is disabled.
        clientCache:
            # The maximum age allowed for cached results before fetching fresh
            # values. A value of "0" means that responses are cached, but the
            # client SDK will always fetch fresh values; the cached values are
            # only used when CACHE_ONLY is specified to execute().
            # Examples: "0", "30s", "1h30m"
            # Optional. Default: "0"
            maxAge: string
            # Configures whether results are to be cached in persistent storage
            # or in memory ("persistent" or "memory").
            # Optional. Default: persistent
            storage: string