Firebase CLI を使用すると、Firebase プロジェクトをローカルの バージョン管理可能なプロジェクト ディレクトリで管理できます。これには、プロジェクト内の SQL Connect サービス、それらのサービスのコネクタ、 スキーマ、クエリ、ミューテーション ソースなどのリソースが含まれます。また、CLI を使用して Firebase SQL Connect エミュレータをインストールして操作することもできます。CLI は、 コンソールでの作業に代わる効率的な方法です。Firebase
Private Preview プログラム用の Firebase CLI の試験運用版のインストール手順と、SQL Connect 関連の CLI コマンドについては、Firebase CLI リファレンスをご覧ください。
このリファレンス ガイドでは、以下について説明します。
- SQL Connect プロジェクト
構成ファイルの
firebase.json固有のエントリ。 - SQL Connect 構成を
dataconnect.yamlとconnector.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 ConnectCOMPATIBLEモード。アプリケーション スキーマをデプロイするには、データベース スキーマがアプリケーション スキーマと互換性がある必要があります。追加の変更は省略可能です。互換性とは、スキーマの移行が記述したアプリケーション スキーマに基づいていることを意味します。アプリケーション スキーマで使用されていないデータベース内の要素は変更されません。 そのため、デプロイ後、バックエンドに未使用のスキーマ、テーブル、列が含まれる可能性があります。
このファイルの他のキーの値については、以下のコメントで説明します。
# 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