<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/databasecenter/v1beta/service.proto

namespace Google\Cloud\DatabaseCenter\V1beta;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\GPBUtil;
use Google\Protobuf\RepeatedField;

/**
 * The request message to aggregate fleet which are grouped by a field.
 *
 * Generated from protobuf message <code>google.cloud.databasecenter.v1beta.AggregateFleetRequest</code>
 */
class AggregateFleetRequest extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. Parent can be a project, a folder, or an organization. The search
     * is limited to the resources within the `scope`.
     * The allowed values are:
     * * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
     * * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
     * * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
     * * organizations/{ORGANIZATION_NUMBER} (e.g.,
     * "organizations/123456")
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    protected $parent = '';
    /**
     * Optional. The expression to filter resources.
     * Supported fields are: `full_resource_name`, `resource_type`, `container`,
     *   `product.type`, `product.engine`, `product.version`, `location`,
     *   `labels`, `issues`, fields of availability_info, data_protection_info,
     *   'resource_name', etc.
     * The expression is a list of zero or more restrictions combined via logical
     * operators `AND` and `OR`. When `AND` and `OR` are both used in the
     * expression, parentheses must be appropriately used to group the
     * combinations.
     * Example: `location="us-east1"`
     * Example: `container="projects/123" OR container="projects/456"`
     * Example: `(container="projects/123" OR
     *           container="projects/456") AND location="us-east1"`
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $filter = '';
    /**
     * Optional. A field that statistics are grouped by.
     * Valid values are any combination of the following:
     *   * container
     *   * product.type
     *   * product.engine
     *   * product.version
     *   * location
     *   * sub_resource_type
     *   * management_type
     *   * tag.key
     *   * tag.value
     *   * tag.source
     *   * tag.inherited
     *   * label.key
     *   * label.value
     *   * label.source
     *   * has_maintenance_schedule
     *   * has_deny_maintenance_schedules
     * Comma separated list.
     *
     * Generated from protobuf field <code>string group_by = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $group_by = '';
    /**
     * Optional. Valid values to order by are:
     *   * resource_groups_count
     *   * resources_count
     *   * and all fields supported by `group_by`
     * The default order is ascending. Add "DESC" after the field name to indicate
     * descending order. Add "ASC" after the field name to indicate ascending
     * order. It supports ordering using multiple fields.
     * For example:
     *  `order_by = "resource_groups_count"` sorts response in ascending order
     *  `order_by = "resource_groups_count DESC"` sorts response in descending
     *  order
     *  `order_by = "product.type, product.version DESC, location"` orders by type
     *  in ascending order, version in descending order and location in ascending
     *  order
     *
     * Generated from protobuf field <code>string order_by = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $order_by = '';
    /**
     * Optional. If unspecified, at most 50 items will be returned.
     * The maximum value is 1000; values above 1000 will be coerced to 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $page_size = 0;
    /**
     * Optional. A page token, received from a previous `AggregateFleet` call.
     * Provide this to retrieve the subsequent page.
     * All other parameters should match the parameters in the call that provided
     * the page token except for page_size which can be different.
     *
     * Generated from protobuf field <code>string page_token = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $page_token = '';
    /**
     * Optional. The baseline date w.r.t. which the delta counts are calculated.
     * If not set, delta counts are not included in the response and the response
     * indicates the current state of the fleet.
     *
     * Generated from protobuf field <code>optional .google.type.Date baseline_date = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $baseline_date = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $parent
     *           Required. Parent can be a project, a folder, or an organization. The search
     *           is limited to the resources within the `scope`.
     *           The allowed values are:
     *           * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
     *           * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
     *           * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
     *           * organizations/{ORGANIZATION_NUMBER} (e.g.,
     *           "organizations/123456")
     *     @type string $filter
     *           Optional. The expression to filter resources.
     *           Supported fields are: `full_resource_name`, `resource_type`, `container`,
     *             `product.type`, `product.engine`, `product.version`, `location`,
     *             `labels`, `issues`, fields of availability_info, data_protection_info,
     *             'resource_name', etc.
     *           The expression is a list of zero or more restrictions combined via logical
     *           operators `AND` and `OR`. When `AND` and `OR` are both used in the
     *           expression, parentheses must be appropriately used to group the
     *           combinations.
     *           Example: `location="us-east1"`
     *           Example: `container="projects/123" OR container="projects/456"`
     *           Example: `(container="projects/123" OR
     *                     container="projects/456") AND location="us-east1"`
     *     @type string $group_by
     *           Optional. A field that statistics are grouped by.
     *           Valid values are any combination of the following:
     *             * container
     *             * product.type
     *             * product.engine
     *             * product.version
     *             * location
     *             * sub_resource_type
     *             * management_type
     *             * tag.key
     *             * tag.value
     *             * tag.source
     *             * tag.inherited
     *             * label.key
     *             * label.value
     *             * label.source
     *             * has_maintenance_schedule
     *             * has_deny_maintenance_schedules
     *           Comma separated list.
     *     @type string $order_by
     *           Optional. Valid values to order by are:
     *             * resource_groups_count
     *             * resources_count
     *             * and all fields supported by `group_by`
     *           The default order is ascending. Add "DESC" after the field name to indicate
     *           descending order. Add "ASC" after the field name to indicate ascending
     *           order. It supports ordering using multiple fields.
     *           For example:
     *            `order_by = "resource_groups_count"` sorts response in ascending order
     *            `order_by = "resource_groups_count DESC"` sorts response in descending
     *            order
     *            `order_by = "product.type, product.version DESC, location"` orders by type
     *            in ascending order, version in descending order and location in ascending
     *            order
     *     @type int $page_size
     *           Optional. If unspecified, at most 50 items will be returned.
     *           The maximum value is 1000; values above 1000 will be coerced to 1000.
     *     @type string $page_token
     *           Optional. A page token, received from a previous `AggregateFleet` call.
     *           Provide this to retrieve the subsequent page.
     *           All other parameters should match the parameters in the call that provided
     *           the page token except for page_size which can be different.
     *     @type \Google\Type\Date $baseline_date
     *           Optional. The baseline date w.r.t. which the delta counts are calculated.
     *           If not set, delta counts are not included in the response and the response
     *           indicates the current state of the fleet.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Databasecenter\V1Beta\Service::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. Parent can be a project, a folder, or an organization. The search
     * is limited to the resources within the `scope`.
     * The allowed values are:
     * * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
     * * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
     * * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
     * * organizations/{ORGANIZATION_NUMBER} (e.g.,
     * "organizations/123456")
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return string
     */
    public function getParent()
    {
        return $this->parent;
    }

    /**
     * Required. Parent can be a project, a folder, or an organization. The search
     * is limited to the resources within the `scope`.
     * The allowed values are:
     * * projects/{PROJECT_ID} (e.g., "projects/foo-bar")
     * * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
     * * folders/{FOLDER_NUMBER} (e.g., "folders/1234567")
     * * organizations/{ORGANIZATION_NUMBER} (e.g.,
     * "organizations/123456")
     *
     * Generated from protobuf field <code>string parent = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param string $var
     * @return $this
     */
    public function setParent($var)
    {
        GPBUtil::checkString($var, True);
        $this->parent = $var;

        return $this;
    }

    /**
     * Optional. The expression to filter resources.
     * Supported fields are: `full_resource_name`, `resource_type`, `container`,
     *   `product.type`, `product.engine`, `product.version`, `location`,
     *   `labels`, `issues`, fields of availability_info, data_protection_info,
     *   'resource_name', etc.
     * The expression is a list of zero or more restrictions combined via logical
     * operators `AND` and `OR`. When `AND` and `OR` are both used in the
     * expression, parentheses must be appropriately used to group the
     * combinations.
     * Example: `location="us-east1"`
     * Example: `container="projects/123" OR container="projects/456"`
     * Example: `(container="projects/123" OR
     *           container="projects/456") AND location="us-east1"`
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getFilter()
    {
        return $this->filter;
    }

    /**
     * Optional. The expression to filter resources.
     * Supported fields are: `full_resource_name`, `resource_type`, `container`,
     *   `product.type`, `product.engine`, `product.version`, `location`,
     *   `labels`, `issues`, fields of availability_info, data_protection_info,
     *   'resource_name', etc.
     * The expression is a list of zero or more restrictions combined via logical
     * operators `AND` and `OR`. When `AND` and `OR` are both used in the
     * expression, parentheses must be appropriately used to group the
     * combinations.
     * Example: `location="us-east1"`
     * Example: `container="projects/123" OR container="projects/456"`
     * Example: `(container="projects/123" OR
     *           container="projects/456") AND location="us-east1"`
     *
     * Generated from protobuf field <code>string filter = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setFilter($var)
    {
        GPBUtil::checkString($var, True);
        $this->filter = $var;

        return $this;
    }

    /**
     * Optional. A field that statistics are grouped by.
     * Valid values are any combination of the following:
     *   * container
     *   * product.type
     *   * product.engine
     *   * product.version
     *   * location
     *   * sub_resource_type
     *   * management_type
     *   * tag.key
     *   * tag.value
     *   * tag.source
     *   * tag.inherited
     *   * label.key
     *   * label.value
     *   * label.source
     *   * has_maintenance_schedule
     *   * has_deny_maintenance_schedules
     * Comma separated list.
     *
     * Generated from protobuf field <code>string group_by = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getGroupBy()
    {
        return $this->group_by;
    }

    /**
     * Optional. A field that statistics are grouped by.
     * Valid values are any combination of the following:
     *   * container
     *   * product.type
     *   * product.engine
     *   * product.version
     *   * location
     *   * sub_resource_type
     *   * management_type
     *   * tag.key
     *   * tag.value
     *   * tag.source
     *   * tag.inherited
     *   * label.key
     *   * label.value
     *   * label.source
     *   * has_maintenance_schedule
     *   * has_deny_maintenance_schedules
     * Comma separated list.
     *
     * Generated from protobuf field <code>string group_by = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setGroupBy($var)
    {
        GPBUtil::checkString($var, True);
        $this->group_by = $var;

        return $this;
    }

    /**
     * Optional. Valid values to order by are:
     *   * resource_groups_count
     *   * resources_count
     *   * and all fields supported by `group_by`
     * The default order is ascending. Add "DESC" after the field name to indicate
     * descending order. Add "ASC" after the field name to indicate ascending
     * order. It supports ordering using multiple fields.
     * For example:
     *  `order_by = "resource_groups_count"` sorts response in ascending order
     *  `order_by = "resource_groups_count DESC"` sorts response in descending
     *  order
     *  `order_by = "product.type, product.version DESC, location"` orders by type
     *  in ascending order, version in descending order and location in ascending
     *  order
     *
     * Generated from protobuf field <code>string order_by = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getOrderBy()
    {
        return $this->order_by;
    }

    /**
     * Optional. Valid values to order by are:
     *   * resource_groups_count
     *   * resources_count
     *   * and all fields supported by `group_by`
     * The default order is ascending. Add "DESC" after the field name to indicate
     * descending order. Add "ASC" after the field name to indicate ascending
     * order. It supports ordering using multiple fields.
     * For example:
     *  `order_by = "resource_groups_count"` sorts response in ascending order
     *  `order_by = "resource_groups_count DESC"` sorts response in descending
     *  order
     *  `order_by = "product.type, product.version DESC, location"` orders by type
     *  in ascending order, version in descending order and location in ascending
     *  order
     *
     * Generated from protobuf field <code>string order_by = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setOrderBy($var)
    {
        GPBUtil::checkString($var, True);
        $this->order_by = $var;

        return $this;
    }

    /**
     * Optional. If unspecified, at most 50 items will be returned.
     * The maximum value is 1000; values above 1000 will be coerced to 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int
     */
    public function getPageSize()
    {
        return $this->page_size;
    }

    /**
     * Optional. If unspecified, at most 50 items will be returned.
     * The maximum value is 1000; values above 1000 will be coerced to 1000.
     *
     * Generated from protobuf field <code>int32 page_size = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int $var
     * @return $this
     */
    public function setPageSize($var)
    {
        GPBUtil::checkInt32($var);
        $this->page_size = $var;

        return $this;
    }

    /**
     * Optional. A page token, received from a previous `AggregateFleet` call.
     * Provide this to retrieve the subsequent page.
     * All other parameters should match the parameters in the call that provided
     * the page token except for page_size which can be different.
     *
     * Generated from protobuf field <code>string page_token = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getPageToken()
    {
        return $this->page_token;
    }

    /**
     * Optional. A page token, received from a previous `AggregateFleet` call.
     * Provide this to retrieve the subsequent page.
     * All other parameters should match the parameters in the call that provided
     * the page token except for page_size which can be different.
     *
     * Generated from protobuf field <code>string page_token = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setPageToken($var)
    {
        GPBUtil::checkString($var, True);
        $this->page_token = $var;

        return $this;
    }

    /**
     * Optional. The baseline date w.r.t. which the delta counts are calculated.
     * If not set, delta counts are not included in the response and the response
     * indicates the current state of the fleet.
     *
     * Generated from protobuf field <code>optional .google.type.Date baseline_date = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return \Google\Type\Date|null
     */
    public function getBaselineDate()
    {
        return $this->baseline_date;
    }

    public function hasBaselineDate()
    {
        return isset($this->baseline_date);
    }

    public function clearBaselineDate()
    {
        unset($this->baseline_date);
    }

    /**
     * Optional. The baseline date w.r.t. which the delta counts are calculated.
     * If not set, delta counts are not included in the response and the response
     * indicates the current state of the fleet.
     *
     * Generated from protobuf field <code>optional .google.type.Date baseline_date = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param \Google\Type\Date $var
     * @return $this
     */
    public function setBaselineDate($var)
    {
        GPBUtil::checkMessage($var, \Google\Type\Date::class);
        $this->baseline_date = $var;

        return $this;
    }

}

