# coding: utf-8
# Copyright (c) 2016, 2026, Oracle and/or its affiliates.  All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.

# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20230222


from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
from oci.decorators import init_model_state_from_kwargs


@init_model_state_from_kwargs
class ExecuteSqlResponseItemResultSetMetadata(object):
    """
    Metadata of the column
    """

    def __init__(self, **kwargs):
        """
        Initializes a new ExecuteSqlResponseItemResultSetMetadata object with values from keyword arguments.
        The following keyword arguments are supported (corresponding to the getters/setters of this class):

        :param database_column_name:
            The value to assign to the database_column_name property of this ExecuteSqlResponseItemResultSetMetadata.
        :type database_column_name: str

        :param unique_column_name:
            The value to assign to the unique_column_name property of this ExecuteSqlResponseItemResultSetMetadata.
        :type unique_column_name: str

        :param column_type_name:
            The value to assign to the column_type_name property of this ExecuteSqlResponseItemResultSetMetadata.
        :type column_type_name: str

        :param precision:
            The value to assign to the precision property of this ExecuteSqlResponseItemResultSetMetadata.
        :type precision: int

        :param scale:
            The value to assign to the scale property of this ExecuteSqlResponseItemResultSetMetadata.
        :type scale: int

        :param is_nullable:
            The value to assign to the is_nullable property of this ExecuteSqlResponseItemResultSetMetadata.
        :type is_nullable: bool

        """
        self.swagger_types = {
            'database_column_name': 'str',
            'unique_column_name': 'str',
            'column_type_name': 'str',
            'precision': 'int',
            'scale': 'int',
            'is_nullable': 'bool'
        }
        self.attribute_map = {
            'database_column_name': 'databaseColumnName',
            'unique_column_name': 'uniqueColumnName',
            'column_type_name': 'columnTypeName',
            'precision': 'precision',
            'scale': 'scale',
            'is_nullable': 'isNullable'
        }
        self._database_column_name = None
        self._unique_column_name = None
        self._column_type_name = None
        self._precision = None
        self._scale = None
        self._is_nullable = None

    @property
    def database_column_name(self):
        """
        Gets the database_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        Name of the column in the Oracle Database.


        :return: The database_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: str
        """
        return self._database_column_name

    @database_column_name.setter
    def database_column_name(self, database_column_name):
        """
        Sets the database_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        Name of the column in the Oracle Database.


        :param database_column_name: The database_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        :type: str
        """
        self._database_column_name = database_column_name

    @property
    def unique_column_name(self):
        """
        Gets the unique_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        Name of the column in the response Result Set.


        :return: The unique_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: str
        """
        return self._unique_column_name

    @unique_column_name.setter
    def unique_column_name(self, unique_column_name):
        """
        Sets the unique_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        Name of the column in the response Result Set.


        :param unique_column_name: The unique_column_name of this ExecuteSqlResponseItemResultSetMetadata.
        :type: str
        """
        self._unique_column_name = unique_column_name

    @property
    def column_type_name(self):
        """
        Gets the column_type_name of this ExecuteSqlResponseItemResultSetMetadata.
        Oracle Database data type of the column.


        :return: The column_type_name of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: str
        """
        return self._column_type_name

    @column_type_name.setter
    def column_type_name(self, column_type_name):
        """
        Sets the column_type_name of this ExecuteSqlResponseItemResultSetMetadata.
        Oracle Database data type of the column.


        :param column_type_name: The column_type_name of this ExecuteSqlResponseItemResultSetMetadata.
        :type: str
        """
        self._column_type_name = column_type_name

    @property
    def precision(self):
        """
        Gets the precision of this ExecuteSqlResponseItemResultSetMetadata.
        Precision of the column.


        :return: The precision of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: int
        """
        return self._precision

    @precision.setter
    def precision(self, precision):
        """
        Sets the precision of this ExecuteSqlResponseItemResultSetMetadata.
        Precision of the column.


        :param precision: The precision of this ExecuteSqlResponseItemResultSetMetadata.
        :type: int
        """
        self._precision = precision

    @property
    def scale(self):
        """
        Gets the scale of this ExecuteSqlResponseItemResultSetMetadata.
        Scale of the column.


        :return: The scale of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: int
        """
        return self._scale

    @scale.setter
    def scale(self, scale):
        """
        Sets the scale of this ExecuteSqlResponseItemResultSetMetadata.
        Scale of the column.


        :param scale: The scale of this ExecuteSqlResponseItemResultSetMetadata.
        :type: int
        """
        self._scale = scale

    @property
    def is_nullable(self):
        """
        Gets the is_nullable of this ExecuteSqlResponseItemResultSetMetadata.
        Specifies if the column is nullable (0 if the column is not nullable)


        :return: The is_nullable of this ExecuteSqlResponseItemResultSetMetadata.
        :rtype: bool
        """
        return self._is_nullable

    @is_nullable.setter
    def is_nullable(self, is_nullable):
        """
        Sets the is_nullable of this ExecuteSqlResponseItemResultSetMetadata.
        Specifies if the column is nullable (0 if the column is not nullable)


        :param is_nullable: The is_nullable of this ExecuteSqlResponseItemResultSetMetadata.
        :type: bool
        """
        self._is_nullable = is_nullable

    def __repr__(self):
        return formatted_flat_dict(self)

    def __eq__(self, other):
        if other is None:
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not self == other
