# -*- coding: utf-8 -*- #
# Copyright 2025 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# NOTE: This file is autogenerated and should not be edited by hand.
# AUTOGEN_CLI_VERSION: HEAD
- release_tracks:
  - ALPHA
  auto_generated: true
  hidden: true
  help_text:
    brief: Updates Firebase Data Connect service schema.
    description: |
      Updates Firebase Data Connect service schema. Note only `schemas/main` is supported.
    examples: |-
      Updates Firebase Data Connect service schema.

      $ {command} main --location=my-location --project=my-project --service=my-service \
        --source-files=path=gcloud_update.gql,contentFromFile=gcloud.gql
  arguments:
    params:
    - help_text: |-
        Identifier. The relative resource name of the schema, in the format: `projects/{project}/locations/{location}/services/{service}/schemas/{schema}`. Right now, the only supported schema is "main".
      is_positional: true
      is_primary_resource: true
      resource_spec: !REF googlecloudsdk.command_lib.firebase_data_connect.v1alpha_resources:projects_locations_services_schemas
      required: true
    - arg_name: labels
      api_field: schema.labels
      required: false
      repeated: true
      help_text: |-
        Labels as key value pairs.
      clearable: true
      spec:
      - api_field: key
      - api_field: value
    - arg_name: annotations
      api_field: schema.annotations
      required: false
      repeated: true
      help_text: |-
        Stores small amounts of arbitrary data.
      clearable: true
      spec:
      - api_field: key
      - api_field: value
    - group:
        api_field: schema.primaryDatasource
        arg_name: primary-datasource
        clearable: true
        required: false
        help_text: |-
          A data source that backs Firebase Data Connect services.
        params:
        - group:
            mutex: true
            help_text: |-
              Arguments for the configuration.
            params:
            - group:
                api_field: schema.primaryDatasource.postgresql
                required: false
                help_text: |-
                  Settings for PostgreSQL data source.
                params:
                - group:
                    mutex: true
                    help_text: |-
                      Arguments for the before deploy.
                    params:
                    - arg_name: postgresql-schema-validation
                      api_field: schema.primaryDatasource.postgresql.schemaValidation
                      required: false
                      help_text: |-
                        Configure how much Postgresql schema validation to perform.
                      choices:
                      - arg_value: none
                        enum_value: NONE
                        help_text: |-
                          Skip no SQL schema validation. Use it with extreme caution.
                          CreateSchema or UpdateSchema will succeed even if SQL database is
                          unavailable or SQL schema is incompatible.
                          Generated SQL may fail at execution time.
                      - arg_value: strict
                        enum_value: STRICT
                        help_text: |-
                          Connect to the SQL database and validate that the SQL DDL matches the
                          schema exactly. Surface any discrepancies as `FAILED_PRECONDITION` with an
                          `IncompatibleSqlSchemaError` error detail.
                      - arg_value: compatible
                        enum_value: COMPATIBLE
                        help_text: |-
                          Connect to the SQL database and validate that the SQL DDL has all the SQL
                          resources used in the given Firebase Data Connect Schema. Surface any
                          missing resources as `FAILED_PRECONDITION` with an
                          `IncompatibleSqlSchemaError` error detail. Succeed even if there are
                          unknown tables and columns.
                    - arg_name: postgresql-schema-migration
                      api_field: schema.primaryDatasource.postgresql.schemaMigration
                      required: false
                      help_text: |-
                        Configure how to perform Postgresql schema migration.
                      choices:
                      - arg_value: migrate-compatible
                        enum_value: MIGRATE_COMPATIBLE
                        help_text: |-
                          Connect to the SQL database and identify any missing SQL resources used
                          in the given Firebase Data Connect Schema.
                          Automatically create necessary SQL resources (SQL table, column, etc)
                          before deploying the schema.
                          During migration steps, the SQL Schema must comply with the previous
                          before_deploy setting in case the migration is interrupted.
                          Therefore, the previous before_deploy setting must not be
                          `schema_validation=STRICT`.
                - group:
                    mutex: true
                    help_text: |-
                      Arguments for the configuration.
                    params:
                    - arg_name: postgresql-unlinked
                      api_field: schema.primaryDatasource.postgresql.unlinked
                      action: store_true_false
                      required: false
                      type: bool
                      help_text: |-
                        No Postgres data source is linked.
                        If set, don't allow `database` and `schema_validation` to be configured.
                    - group:
                        api_field: schema.primaryDatasource.postgresql.cloudSql
                        required: false
                        help_text: |-
                          Settings for CloudSQL instance configuration.
                        params:
                        - arg_name: postgresql-cloud-sql-instance
                          api_field: schema.primaryDatasource.postgresql.cloudSql.instance
                          required: false
                          repeated: false
                          help_text: |-
                            Name of the CloudSQL instance, in the format: `projects/{project}/locations/{location}/instances/{instance}`.
                - arg_name: postgresql-database
                  api_field: schema.primaryDatasource.postgresql.database
                  required: false
                  repeated: false
                  help_text: |-
                    Name of the PostgreSQL database.
    - arg_name: datasources
      api_field: schema.datasources
      required: false
      repeated: true
      help_text: |-
        The data sources linked in the schema.
      clearable: true
      spec:
      - api_field: postgresql
        one_of_index: 0
        help_text: |-
          PostgreSQL configurations.
        spec:
        - api_field: schemaValidation
          one_of_index: 0
          help_text: |-
            Configure how much Postgresql schema validation to perform.
        - api_field: schemaMigration
          one_of_index: 0
          help_text: |-
            Configure how to perform Postgresql schema migration.
        - api_field: unlinked
          one_of_index: 1
          help_text: |-
            No Postgres data source is linked.
            If set, don't allow `database` and `schema_validation` to be configured.
        - api_field: cloudSql
          one_of_index: 1
          help_text: |-
            Cloud SQL configurations.
          spec:
          - api_field: instance
            help_text: |-
              Name of the CloudSQL instance, in the format: `projects/{project}/locations/{location}/instances/{instance}`.
        - api_field: database
          help_text: |-
            Name of the PostgreSQL database.
    - group:
        api_field: schema.source
        arg_name: source
        clearable: true
        required: false
        help_text: |-
          Used to represent a set of source files.
        params:
        - arg_name: source-files
          api_field: schema.source.files
          required: false
          repeated: true
          help_text: |-
            The files that comprise the source set.
          clearable: true
          spec:
          - api_field: path
            help_text: |-
              The file name including folder path, if applicable. The path should be
              relative to a local workspace (e.g. dataconnect/(schema|connector)/*.gql)
              and not an absolute path (e.g. /absolute/path/(schema|connector)/*.gql).
          - api_field: content
            json_name: contentFromFile
            type: file_type
            help_text: |-
              The file's textual content.
    - arg_name: display-name
      api_field: schema.displayName
      required: false
      repeated: false
      help_text: |-
        Mutable human-readable name. 63 character limit.
    - arg_name: request-id
      api_field: requestId
      required: false
      repeated: false
      help_text: |-
        An optional request ID to identify requests. Specify a unique request ID
        so that if you must retry your request, the server will know to ignore
        the request if it has already been completed. The server will guarantee
        that for at least 60 minutes since the first request.

        For example, consider a situation where you make an initial request and the
        request times out. If you make the request again with the same request
        ID, the server can check if original operation with the same request ID
        was received, and if so, will ignore the second request. This prevents
        clients from accidentally creating duplicate commitments.

        The request ID must be a valid UUID with the exception that zero UUID is
        not supported (00000000-0000-0000-0000-000000000000).
    - arg_name: allow-missing
      api_field: allowMissing
      action: store_true_false
      required: false
      type: bool
      help_text: |-
        If true and the Schema is not found, a new Schema will be created.
        In this case, `update_mask` is ignored.
    - arg_name: validate-only
      api_field: validateOnly
      action: store_true_false
      required: false
      type: bool
      help_text: |-
        If set, validate the request and preview the Schema, but do not actually
        update it.
  request:
    api_version: v1alpha
    collection:
    - firebasedataconnect.projects.locations.services.schemas
    static_fields:
      updateMask: '*'
  async:
    collection:
    - firebasedataconnect.projects.locations.operations
  update:
    read_modify_update: true
    disable_auto_field_mask: true
