-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
P0 · critiqueBloquant — à traiter immédiatementBloquant — à traiter immédiatementadvancedArchitecture complexe ou décisions techniquesArchitecture complexe ou décisions techniquesfeatureNouvelle fonctionnalité à développerNouvelle fonctionnalité à développermodule · objectParseObject — CRUD et types ParseParseObject — CRUD et types Parse
Milestone
Description
Contexte
ParseObject est le cœur du SDK. Il représente un enregistrement dans une classe Parse et expose les opérations fondamentales : créer, lire, mettre à jour, supprimer.
⚠️ Dépend de #1 (ParseClient) — attendez que cette issue soit mergée.
Endpoints REST Parse
POST /classes/{ClassName} → création
GET /classes/{ClassName}/{objectId} → lecture
PUT /classes/{ClassName}/{objectId} → mise à jour
DELETE /classes/{ClassName}/{objectId} → suppression
API Python attendue
from parse_sdk import ParseObject
obj = ParseObject("GameScore")
obj.set("playerName", "Alice")
obj.set("score", 1337)
await obj.save()
print(obj.object_id) # "Ed1nuqPvcm"
print(obj.created_at) # datetime(2024, ...)
obj2 = ParseObject("GameScore", object_id="Ed1nuqPvcm")
await obj2.fetch()
print(obj2.get("playerName")) # "Alice"
obj2.set("score", 9001)
await obj2.save() # PUT automatique si object_id présent
await obj2.delete()
# Versions synchrones
obj3 = ParseObject("GameScore")
obj3.save_sync()
obj3.fetch_sync()
obj3.delete_sync()Fichiers à créer / modifier
- Créer
src/parse_sdk/object.py - Modifier
src/parse_sdk/__init__.py→ ajouterParseObject - Créer
tests/unit/test_object.py
Ce qui existe déjà (à importer, ne pas recréer)
src/parse_sdk/_http.py→ couche HTTPsrc/parse_sdk/_types.py→encode_parse_value,decode_parse_valuesrc/parse_sdk/exceptions.py→ParseObjectNotFoundError(code 101)src/parse_sdk/client.py→get_client()(issue #1)
Points techniques
save(): POST si pas d'object_id, PUT sinon- Après
save(), peuplerobject_id,created_at,updated_atdepuis la réponse fetch()lèveParseObjectNotFoundErrorsi le serveur retourne l'erreur 101_data: dict interne des champs,_dirty: champs modifiés depuis le dernier save
Critères d'acceptation
-
save()crée (POST) et peupleobject_id,created_at,updated_at -
save()met à jour (PUT) siobject_idest défini -
fetch()charge les données depuis Parse Server -
fetch()lèveParseObjectNotFoundErrorsi objet inexistant -
delete()supprime l'objet -
save_sync(),fetch_sync(),delete_sync()disponibles - Tests mockés avec
respx - Couverture > 80% sur
object.py -
mypy,black,ruffpassent
Ressources
- Doc Parse REST objects : https://docs.parseplatform.org/rest/guide/#objects
src/parse_sdk/_types.py→encode_parse_value/decode_parse_value
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P0 · critiqueBloquant — à traiter immédiatementBloquant — à traiter immédiatementadvancedArchitecture complexe ou décisions techniquesArchitecture complexe ou décisions techniquesfeatureNouvelle fonctionnalité à développerNouvelle fonctionnalité à développermodule · objectParseObject — CRUD et types ParseParseObject — CRUD et types Parse