Skip to content

feat(object): ajouter les opérations atomiques et types spéciaux à ParseObject #17

@Ulrich75

Description

@Ulrich75

Contexte

Cette issue complète ParseObject avec les opérations atomiques et les types spéciaux. Tout est déjà dans _types.py — il s'agit uniquement d'ajouter les méthodes correspondantes dans ParseObject.

⚠️ Dépend de #2 (ParseObject CRUD).

💚 Idéale pour un premier contributeur — le travail est borné, les classes à utiliser existent déjà.

Ce qui existe déjà dans _types.py

Classe Format JSON envoyé à Parse
Increment(amount) {"__op": "Increment", "amount": N}
AddToArray([...]) {"__op": "Add", "objects": [...]}
AddUniqueToArray([...]) {"__op": "AddUnique", "objects": [...]}
RemoveFromArray([...]) {"__op": "Remove", "objects": [...]}
DeleteField() {"__op": "Delete"}
GeoPoint(lat, lng) {"__type": "GeoPoint", ...}
Pointer(class, id) {"__type": "Pointer", ...}

API Python à ajouter dans ParseObject

obj = ParseObject("GameScore")
obj.increment("score", 10)
obj.increment("views")                       # amount=1 par défaut
obj.add_to_array("tags", ["python", "sdk"])
obj.add_unique("skills", ["async"])
obj.remove_from_array("tags", ["old"])
obj.unset("temporaryField")
obj.set("location", GeoPoint(48.8566, 2.3522))
obj.set("author", Pointer("User", "abc123"))
await obj.save()

Fichiers à modifier

  • Modifier src/parse_sdk/object.py → ajouter les 5 nouvelles méthodes
  • Modifier tests/unit/test_object.py → ajouter les tests

Critères d'acceptation

  • increment(key, amount=1) fonctionne
  • add_to_array(key, values) fonctionne
  • add_unique(key, values) fonctionne
  • remove_from_array(key, values) fonctionne
  • unset(key) fonctionne
  • GeoPoint et Pointer sérialisés correctement via encode_parse_value()
  • Toutes les méthodes retournent self pour le chaînage
  • Tests unitaires pour chaque méthode
  • mypy, black, ruff passent

Ressources

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1 · hauteSprint en cours — haute prioritéfeatureNouvelle fonctionnalité à développergood first issueIdéal pour commencer — bien documenté et bornémodule · objectParseObject — CRUD et types Parse

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions