# Note: we have some duplicated resources here because of a limitation with declarative commands. # # In particular, some commands (e.g. composite create) need the collection group to be specified. # But other commands (e.g. composite list) need to function if the collection group is not specified # (a special value of '-' is used). # # Normally this would be configured with command level fallthroughs; however, the declarative schema # currently only allows command level fallthroughs to be arg_fallthroughs (as opposed to generic # python hook fallthroughs), which means we can't provide a default value in this manner. # # The workaround for now is just to have different commands use different resource args with # appropriate attribute fallthroughs (which can be generic python hooks) depending on what the # command needs. project: name: project collection: firestore.projects attributes: - &project parameter_name: projectsId attribute_name: project help: | Project of the {resource}. property: core/project database: name: database collection: firestore.projects.databases attributes: - *project - &database parameter_name: databasesId attribute_name: database help: | Database of the {resource}. fallthroughs: - value: (default) hint: |- the default value of argument [--database] is `(default)` # This is for the '-' collection group which allows API calls to access index IDs without specifying # their collection group, e.g.: # projects/{projectsId}/databases/{databasesId}/collectionGroups/-/{indexesId} collection_group_with_default: name: collection group collection: firestore.projects.databases.collectionGroups attributes: - *project - *database - &collection_group_with_default parameter_name: collectionGroupsId attribute_name: collection-group help: | Collection group of the {resource}. fallthroughs: - hook: googlecloudsdk.command_lib.firestore.util:GetCollectionGroupFallthrough hint: |- provide the argument [--collection-group] on the command line collection_group: name: collection group collection: firestore.projects.databases.collectionGroups attributes: - *project - *database - &collection_group parameter_name: collectionGroupsId attribute_name: collection-group help: | Collection group of the {resource}. # Composite index IDs are unique across all collection groups; we can use the special '-' collection # group in API calls so that the user doesn't need to enter the actual one on the command line. index: name: composite index collection: firestore.projects.databases.collectionGroups.indexes attributes: - *project - *database - *collection_group_with_default - &index parameter_name: indexesId attribute_name: index help: | Index of the {resource}. # This resource lets us describe the special field that contains database-wide index settings. Note # that the collection group for this field is '__default__' not '-', so we can't reuse the # collection_group_with_default attribute. field_with_default: name: field collection: firestore.projects.databases.collectionGroups.fields attributes: - *project - *database - parameter_name: collectionGroupsId attribute_name: collection-group help: | Collection group of the {resource}. fallthroughs: - hook: googlecloudsdk.command_lib.firestore.util:GetDefaultFieldCollectionGroupFallthrough hint: ' ' - &field_with_default parameter_name: fieldsId attribute_name: field help: | Field of the {resource}. The field may be a simple field name (e.g. address) or a path to a field in a key-value map (e.g. address.city.neighborhood). fallthroughs: - hook: googlecloudsdk.command_lib.firestore.util:GetDefaultFieldPathFallthrough hint: ' ' field: name: field collection: firestore.projects.databases.collectionGroups.fields attributes: - *project - *database - *collection_group - &field parameter_name: fieldsId attribute_name: field help: | Field of the {resource}. The field may be a simple field name (e.g. address) or a path to a field in a key-value map (e.g. address.city.neighborhood).