# coding: utf-8

"""
    Seeq REST API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 66.58.1-v202509300326-CD
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from pprint import pformat
from six import iteritems
import re


class ScalingTableUUIDColumnSearchV1(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """


    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'column_definition_id': 'str',
        'is_include': 'bool',
        'row_ids': 'list[str]',
        'search_type': 'str',
        'table_definition_id': 'str',
        'types': 'list[str]'
    }

    attribute_map = {
        'column_definition_id': 'columnDefinitionId',
        'is_include': 'isInclude',
        'row_ids': 'rowIds',
        'search_type': 'searchType',
        'table_definition_id': 'tableDefinitionId',
        'types': 'types'
    }

    def __init__(self, column_definition_id=None, is_include=None, row_ids=None, search_type=None, table_definition_id=None, types=None):
        """
        ScalingTableUUIDColumnSearchV1 - a model defined in Swagger
        """

        self._column_definition_id = None
        self._is_include = None
        self._row_ids = None
        self._search_type = None
        self._table_definition_id = None
        self._types = None

        if column_definition_id is not None:
          self.column_definition_id = column_definition_id
        if is_include is not None:
          self.is_include = is_include
        if row_ids is not None:
          self.row_ids = row_ids
        if search_type is not None:
          self.search_type = search_type
        if table_definition_id is not None:
          self.table_definition_id = table_definition_id
        if types is not None:
          self.types = types

    @property
    def column_definition_id(self):
        """
        Gets the column_definition_id of this ScalingTableUUIDColumnSearchV1.
        The column definition ID whose items will be searched

        :return: The column_definition_id of this ScalingTableUUIDColumnSearchV1.
        :rtype: str
        """
        return self._column_definition_id

    @column_definition_id.setter
    def column_definition_id(self, column_definition_id):
        """
        Sets the column_definition_id of this ScalingTableUUIDColumnSearchV1.
        The column definition ID whose items will be searched

        :param column_definition_id: The column_definition_id of this ScalingTableUUIDColumnSearchV1.
        :type: str
        """
        if column_definition_id is None:
            raise ValueError("Invalid value for `column_definition_id`, must not be `None`")

        self._column_definition_id = column_definition_id

    @property
    def is_include(self):
        """
        Gets the is_include of this ScalingTableUUIDColumnSearchV1.
        If true, the items found by this search will be included in the output. If false, then the results will be excluded from the output (even if found by another search)

        :return: The is_include of this ScalingTableUUIDColumnSearchV1.
        :rtype: bool
        """
        return self._is_include

    @is_include.setter
    def is_include(self, is_include):
        """
        Sets the is_include of this ScalingTableUUIDColumnSearchV1.
        If true, the items found by this search will be included in the output. If false, then the results will be excluded from the output (even if found by another search)

        :param is_include: The is_include of this ScalingTableUUIDColumnSearchV1.
        :type: bool
        """
        if is_include is None:
            raise ValueError("Invalid value for `is_include`, must not be `None`")

        self._is_include = is_include

    @property
    def row_ids(self):
        """
        Gets the row_ids of this ScalingTableUUIDColumnSearchV1.
        The row ids, either the item ids that identify the rows of the table or the item id and datum id pair separated by '|', that filter the search to only those rows.

        :return: The row_ids of this ScalingTableUUIDColumnSearchV1.
        :rtype: list[str]
        """
        return self._row_ids

    @row_ids.setter
    def row_ids(self, row_ids):
        """
        Sets the row_ids of this ScalingTableUUIDColumnSearchV1.
        The row ids, either the item ids that identify the rows of the table or the item id and datum id pair separated by '|', that filter the search to only those rows.

        :param row_ids: The row_ids of this ScalingTableUUIDColumnSearchV1.
        :type: list[str]
        """

        self._row_ids = row_ids

    @property
    def search_type(self):
        """
        Gets the search_type of this ScalingTableUUIDColumnSearchV1.
        The type of search

        :return: The search_type of this ScalingTableUUIDColumnSearchV1.
        :rtype: str
        """
        return self._search_type

    @search_type.setter
    def search_type(self, search_type):
        """
        Sets the search_type of this ScalingTableUUIDColumnSearchV1.
        The type of search

        :param search_type: The search_type of this ScalingTableUUIDColumnSearchV1.
        :type: str
        """
        if search_type is None:
            raise ValueError("Invalid value for `search_type`, must not be `None`")
        allowed_values = ["SWAP_ACROSS_ASSETS", "FIXED_LIST", "PROPERTY", "MATERIALIZED_TABLE_UUID_COLUMN", "HIERARCHY"]
        if search_type not in allowed_values:
            raise ValueError(
                "Invalid value for `search_type` ({0}), must be one of {1}"
                .format(search_type, allowed_values)
            )

        self._search_type = search_type

    @property
    def table_definition_id(self):
        """
        Gets the table_definition_id of this ScalingTableUUIDColumnSearchV1.
        The table definition ID whose column items will be searched

        :return: The table_definition_id of this ScalingTableUUIDColumnSearchV1.
        :rtype: str
        """
        return self._table_definition_id

    @table_definition_id.setter
    def table_definition_id(self, table_definition_id):
        """
        Sets the table_definition_id of this ScalingTableUUIDColumnSearchV1.
        The table definition ID whose column items will be searched

        :param table_definition_id: The table_definition_id of this ScalingTableUUIDColumnSearchV1.
        :type: str
        """
        if table_definition_id is None:
            raise ValueError("Invalid value for `table_definition_id`, must not be `None`")

        self._table_definition_id = table_definition_id

    @property
    def types(self):
        """
        Gets the types of this ScalingTableUUIDColumnSearchV1.
        The types of items that will be searched, defaults to all types if not provided

        :return: The types of this ScalingTableUUIDColumnSearchV1.
        :rtype: list[str]
        """
        return self._types

    @types.setter
    def types(self, types):
        """
        Sets the types of this ScalingTableUUIDColumnSearchV1.
        The types of items that will be searched, defaults to all types if not provided

        :param types: The types of this ScalingTableUUIDColumnSearchV1.
        :type: list[str]
        """

        self._types = types

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        if not isinstance(other, ScalingTableUUIDColumnSearchV1):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """
        Returns true if both objects are not equal
        """
        return not self == other
