rules:
  - id: use-earliest-or-latest
    message:
      Looks like you are only accessing first element of an ordered QuerySet. Use `latest()` or `earliest()` instead.
      See https://docs.djangoproject.com/en/3.0/ref/models/querysets/#django.db.models.query.QuerySet.latest
    languages: [python]
    severity: ERROR
    pattern-either:
      - pattern: $X.objects.order_by(...)[0]
      - pattern: $X.objects.$FUNC(...).order_by(...)[0]
      - pattern: $X.objects.$FUNC(...).$FILTER(...).order_by(...)[0]
    metadata:
      category: performance
      technology:
        - django
