Skip to content

feat(query): ajouter les filtres avancés à ParseQuery (tableaux, existence, texte, composés) #19

@Ulrich75

Description

@Ulrich75

Contexte

Cette issue complète ParseQuery avec les filtres avancés indispensables en production.

⚠️ Dépend de #4 (ParseQuery filtres de base).

Correspondances filtres → opérateurs JSON Parse

Méthode Python Opérateur JSON
contained_in("k", [...]) {"k": {"$in": [...]}}
not_contained_in("k", [...]) {"k": {"$nin": [...]}}
contains_all("k", [...]) {"k": {"$all": [...]}}
exists("k") {"k": {"$exists": true}}
does_not_exist("k") {"k": {"$exists": false}}
starts_with("k", "v") {"k": {"$regex": "^v"}}
contains("k", "v") {"k": {"$regex": "v"}}

API Python attendue

query = ParseQuery("Article")
query.contained_in("status", ["published", "featured"])
query.not_contained_in("status", ["banned"])
query.contains_all("tags", ["python", "async"])
query.exists("email")
query.does_not_exist("deletedAt")
query.starts_with("name", "Al")
query.select("name", "score")
query.include("author")

q1 = ParseQuery("GameScore").greater_than("score", 1000)
q2 = ParseQuery("GameScore").equal_to("cheatMode", False)
combined = ParseQuery.or_query(q1, q2)
results = await combined.find()

Fichiers à modifier

  • Modifier src/parse_sdk/query.py
  • Créer tests/unit/test_query_advanced.py

Critères d'acceptation

  • contained_in, not_contained_in, contains_all fonctionnent
  • exists, does_not_exist fonctionnent
  • starts_with, contains fonctionnent
  • select() et include() ajoutent les bons paramètres HTTP
  • or_query() et and_query() sont des @classmethod
  • Toutes les méthodes retournent self
  • mypy, black, ruff passent

Ressources

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1 · hauteSprint en cours — haute prioritéfeatureNouvelle fonctionnalité à développerintermediateRequiert de l'expérience Python / asyncmodule · queryParseQuery — filtres et pagination

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions