diff --git a/src/sentry/db/models/fields/array.py b/src/sentry/db/models/fields/array.py index 568e71b0bd14f3..7aa80341e02873 100644 --- a/src/sentry/db/models/fields/array.py +++ b/src/sentry/db/models/fields/array.py @@ -2,11 +2,9 @@ import ast -from django.contrib.postgres.fields import ArrayField as DjangoArrayField from django.db import models from sentry.db.models.utils import Creator -from sentry.db.postgres.lookups.array_element_contains import ArrayElementContainsLookup from sentry.utils import json @@ -71,6 +69,3 @@ def to_python(self, value): assert "\\" not in value, "Unexpected ArrayField format" value = value[1:-1].split(",") return [self.of.to_python(x) for x in value] - - -DjangoArrayField.register_lookup(ArrayElementContainsLookup) diff --git a/src/sentry/db/postgres/lookups/__init__.py b/src/sentry/db/postgres/lookups/__init__.py deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/src/sentry/db/postgres/lookups/array_element_contains.py b/src/sentry/db/postgres/lookups/array_element_contains.py deleted file mode 100644 index 7dad2c4275ed09..00000000000000 --- a/src/sentry/db/postgres/lookups/array_element_contains.py +++ /dev/null @@ -1,28 +0,0 @@ -from django.db.backends.base.base import BaseDatabaseWrapper -from django.db.models import Lookup -from django.db.models.sql.compiler import SQLCompiler - -__all__ = ("ArrayElementContainsLookup",) - - -class ArrayElementContainsLookup(Lookup): - lookup_name = "element_contains" - - def as_sql( - self, compiler: SQLCompiler, connection: BaseDatabaseWrapper - ) -> tuple[str, list[int | str]]: - """ - Custom lookup for checking if an element of the array contains a value. - """ - - lhs, lhs_params = self.process_lhs(compiler, connection) - rhs, rhs_params = self.process_rhs(compiler, connection) - params = lhs_params + rhs_params - - clause = f"""\ -EXISTS ( - SELECT * FROM UNNEST({lhs}) AS elem - WHERE elem LIKE '%%' || {rhs} || '%%' -) -""" - return clause, params diff --git a/tests/sentry/db/postgres/lookups/__init__.py b/tests/sentry/db/postgres/lookups/__init__.py deleted file mode 100644 index e69de29bb2d1d6..00000000000000 diff --git a/tests/sentry/db/postgres/lookups/test_array_element_contains.py b/tests/sentry/db/postgres/lookups/test_array_element_contains.py deleted file mode 100644 index 7fcc942e6a1910..00000000000000 --- a/tests/sentry/db/postgres/lookups/test_array_element_contains.py +++ /dev/null @@ -1,51 +0,0 @@ -import pytest -from django.contrib.postgres.fields import ArrayField as DjangoArrayField -from django.db import models - - -class ArrayElementContainsLookupTestModel(models.Model): - id = models.AutoField(primary_key=True) - array_field = DjangoArrayField(models.TextField(), null=True) - - class Meta: - app_label = "fixtures" - - -@pytest.fixture -def array_element_contains_db(): - ArrayElementContainsLookupTestModel.objects.bulk_create( - [ - ArrayElementContainsLookupTestModel(array_field=["foo", "bar", "baz"]), - ArrayElementContainsLookupTestModel(array_field=["foo", "bar"]), - ArrayElementContainsLookupTestModel(array_field=[]), - ArrayElementContainsLookupTestModel(array_field=None), - ] - ) - yield - ArrayElementContainsLookupTestModel.objects.all().delete() - - -@pytest.mark.django_db -def test_basic_usage_for_array_field(array_element_contains_db): - assert ( - ArrayElementContainsLookupTestModel.objects.filter( - array_field__element_contains="foo" - ).count() - == 2 - ) - - result = ArrayElementContainsLookupTestModel.objects.filter(array_field__element_contains="baz") - assert len(result) == 1 - assert result[0].array_field == ["foo", "bar", "baz"] - - assert ( - ArrayElementContainsLookupTestModel.objects.filter( - array_field__element_contains="qux" - ).count() - == 0 - ) - - assert ( - ArrayElementContainsLookupTestModel.objects.filter(array_field__element_contains="").count() - == 2 - ) # only non empty arrays are considered, and it's elements are checked if they contain ''