# coding: utf-8

"""
    Airtable API

    OpenAPI spec for Airtable's REST API  # noqa: E501

    OpenAPI spec version: 2024-12-27
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class RecordResponseWithComments(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 = {
        'id': 'str',
        'created_time': 'datetime',
        'fields': 'dict(str, object)',
        'comment_count': 'float'
    }

    attribute_map = {
        'id': 'id',
        'created_time': 'createdTime',
        'fields': 'fields',
        'comment_count': 'commentCount'
    }

    def __init__(self, id=None, created_time=None, fields=None, comment_count=None):  # noqa: E501
        """RecordResponseWithComments - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._created_time = None
        self._fields = None
        self._comment_count = None
        self.discriminator = None
        self.id = id
        self.created_time = created_time
        self.fields = fields
        if comment_count is not None:
            self.comment_count = comment_count

    @property
    def id(self):
        """Gets the id of this RecordResponseWithComments.  # noqa: E501

        Record ID  # noqa: E501

        :return: The id of this RecordResponseWithComments.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this RecordResponseWithComments.

        Record ID  # noqa: E501

        :param id: The id of this RecordResponseWithComments.  # noqa: E501
        :type: str
        """
        if id is None:
            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501

        self._id = id

    @property
    def created_time(self):
        """Gets the created_time of this RecordResponseWithComments.  # noqa: E501

        A date timestamp in the ISO format, eg:\"2018-01-01T00:00:00.000Z\"  # noqa: E501

        :return: The created_time of this RecordResponseWithComments.  # noqa: E501
        :rtype: datetime
        """
        return self._created_time

    @created_time.setter
    def created_time(self, created_time):
        """Sets the created_time of this RecordResponseWithComments.

        A date timestamp in the ISO format, eg:\"2018-01-01T00:00:00.000Z\"  # noqa: E501

        :param created_time: The created_time of this RecordResponseWithComments.  # noqa: E501
        :type: datetime
        """
        if created_time is None:
            raise ValueError("Invalid value for `created_time`, must not be `None`")  # noqa: E501

        self._created_time = created_time

    @property
    def fields(self):
        """Gets the fields of this RecordResponseWithComments.  # noqa: E501

        Cell values are keyed by either field name or field ID (conditioned on returnFieldsByFieldId). See Cell Values for more information on cell value response types.  # noqa: E501

        :return: The fields of this RecordResponseWithComments.  # noqa: E501
        :rtype: dict(str, object)
        """
        return self._fields

    @fields.setter
    def fields(self, fields):
        """Sets the fields of this RecordResponseWithComments.

        Cell values are keyed by either field name or field ID (conditioned on returnFieldsByFieldId). See Cell Values for more information on cell value response types.  # noqa: E501

        :param fields: The fields of this RecordResponseWithComments.  # noqa: E501
        :type: dict(str, object)
        """
        if fields is None:
            raise ValueError("Invalid value for `fields`, must not be `None`")  # noqa: E501

        self._fields = fields

    @property
    def comment_count(self):
        """Gets the comment_count of this RecordResponseWithComments.  # noqa: E501

        The number of comments (if there are any) on the record. The recordMetadata query parameter must include \"commentCount\" in order to receive this.  # noqa: E501

        :return: The comment_count of this RecordResponseWithComments.  # noqa: E501
        :rtype: float
        """
        return self._comment_count

    @comment_count.setter
    def comment_count(self, comment_count):
        """Sets the comment_count of this RecordResponseWithComments.

        The number of comments (if there are any) on the record. The recordMetadata query parameter must include \"commentCount\" in order to receive this.  # noqa: E501

        :param comment_count: The comment_count of this RecordResponseWithComments.  # noqa: E501
        :type: float
        """

        self._comment_count = comment_count

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

        for attr, _ in six.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
        if issubclass(RecordResponseWithComments, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.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, RecordResponseWithComments):
            return False

        return self.__dict__ == other.__dict__

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