"""Common GraphQL filter input types.

⚠️ AUTO-GENERATED BY PRISM - DO NOT EDIT
"""

from __future__ import annotations

import strawberry


@strawberry.input(description="Filter conditions for string fields")
class StringFilter:
    """String field filter operators."""

    eq: str | None = None
    ne: str | None = None
    contains: str | None = None
    starts_with: str | None = strawberry.field(default=None, name="startsWith")
    ends_with: str | None = strawberry.field(default=None, name="endsWith")
    in_: list[str] | None = strawberry.field(default=None, name="in")


@strawberry.input(description="Filter conditions for integer fields")
class IntFilter:
    """Integer field filter operators."""

    eq: int | None = None
    ne: int | None = None
    gt: int | None = None
    gte: int | None = None
    lt: int | None = None
    lte: int | None = None
    in_: list[int] | None = strawberry.field(default=None, name="in")


@strawberry.input(description="Filter conditions for float fields")
class FloatFilter:
    """Float field filter operators."""

    eq: float | None = None
    ne: float | None = None
    gt: float | None = None
    gte: float | None = None
    lt: float | None = None
    lte: float | None = None


@strawberry.input(description="Filter conditions for boolean fields")
class BoolFilter:
    """Boolean field filter operators."""

    eq: bool | None = None


@strawberry.input(description="Filter conditions for datetime fields")
class DateTimeFilter:
    """DateTime field filter operators."""

    eq: str | None = None
    ne: str | None = None
    gt: str | None = None
    gte: str | None = None
    lt: str | None = None
    lte: str | None = None


@strawberry.input(description="Filter conditions for date fields")
class DateFilter:
    """Date field filter operators."""

    eq: str | None = None
    ne: str | None = None
    gt: str | None = None
    gte: str | None = None
    lt: str | None = None
    lte: str | None = None


__all__ = [
    "StringFilter",
    "IntFilter",
    "FloatFilter",
    "BoolFilter",
    "DateTimeFilter",
    "DateFilter",
]
