====================
Deprecation Timeline
====================

This document outlines when various pieces of Django MongoDB Backend will be
removed or altered in a backward incompatible way, following their deprecation.

6.1
---

.. _inline-constraints-and-indexes-deprecation:

Inline constraints and indexes on embedded models
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Defining indexes and constraints on embedded models using ``unique=True``,
``db_index=True``, ``Meta.constraints``, ``Meta.indexes``, and
``Meta.unique_together``  will no longer be supported. Instead, use
:class:`~django_mongodb_backend.indexes.EmbeddedFieldIndex` and
:class:`~django_mongodb_backend.constraints.EmbeddedFieldUniqueConstraint` on
the top-level model.

For example, instead of::

    class Target(EmbeddedModel):
        foo = models.IntegerField(unique=True)


    class MyModel(models.Model):
        field = EmbeddedModelField(Target)

use::

    from django_mongodb_backend.indexes import EmbeddedFieldUniqueConstraint


    class Target(EmbeddedModel):
        foo = models.IntegerField()


    class MyModel(models.Model):
        field = EmbeddedModelField(Target)

        class Meta:
            constraints = [
                EmbeddedFieldUniqueConstraint(fields=["field.foo"], name="..."),
            ]

6.0
---

.. _parse-uri-deprecation:

``parse_uri()`` will be removed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``django_mongodb_backend.utils.parse_uri()`` is deprecated in favor of putting
the connection string in ``DATABASES["HOST"]``.

For example, instead of::

    DATABASES = {
        "default": django_mongodb_backend.parse_uri("mongodb://localhost:27017/", db_name="db"),
    }

use::

    DATABASES = {
        'default': {
            'ENGINE': 'django_mongodb_backend',
            'HOST': 'mongodb://localhost:27017/',
            'NAME': 'db',
        },
    }
