Skip to content

feat:implement ParseObject and crud operation#28

Open
Level237 wants to merge 1 commit intodevelopfrom
feat/parseObject-crud
Open

feat:implement ParseObject and crud operation#28
Level237 wants to merge 1 commit intodevelopfrom
feat/parseObject-crud

Conversation

@Level237
Copy link
Copy Markdown
Collaborator

Résumé

Cette PR implémente la classe ParseObject, le composant fondamental du SDK permettant de manipuler les objets Parse Server. Elle fournit les opérations CRUD de base (Create, Read, Update, Delete) pour interagir avec les données stockées sur Parse Server via l'API REST.

ParseObject est la brique de base sur laquelle reposent d'autres fonctionnalités comme ParseUser (Issue #20) et ParseQuery (Issue #17). Son implémentation était donc critique pour la progression du SDK.

Issue liée

Closes #16


Type de changement

  • feat — Nouvelle fonctionnalité
  • fix — Correction de bug
  • docs — Documentation uniquement
  • test — Ajout ou modification de tests
  • refactor — Refactoring sans changement de comportement
  • chore — Maintenance, CI/CD, dépendances
  • breaking change — Modifie l'API publique (nécessite un bump majeur)

Changements apportés

Création de src/parse_sdk/object.py contenant la classe ParseObject
Implémentation des méthodes CRUD :
save() — Création et mise à jour d'objets
fetch() — Récupération des données depuis le serveur
delete() — Suppression d'un objet
Gestion des propriétés dynamiques via getattr et setattr
Support des types Parse spéciaux (GeoPoint, Pointer, ParseDate, etc.)
Propriétés utilitaires : object_id, created_at, updated_at, is_dirty
Ajout de l'export ParseObject dans src/parse_sdk/init.py
Création de tests/unit/test_object.py avec tests unitaires complets


Comment tester

# Exemple de code pour tester manuellement
from parse_sdk import ParseClient, ParseObject, get_client

# Initialiser le client
client = ParseClient(
    application_id="your_app_id",
    rest_api_key="your_api_key",
    server_url="https://parse-server.example.com/parse"
)

# Créer un objet
game_score = ParseObject("GameScore")
game_score["score"] = 1337
game_score["playerName"] = "John Doe"
game_score.save()
print(f"Created object with ID: {game_score.object_id}")

# Récupérer un objet existant
existing = ParseObject("GameScore", object_id="abc123")
existing.fetch()
print(f"Score: {existing['score']}")

# Mettre à jour
existing["score"] = 2000
existing.save()

# Supprimer
existing.delete()

Checklist

Code

  • Mon code respecte les standards du projet (black, ruff, mypy passent en local)
  • J'ai utilisé des type hints sur toutes les fonctions et méthodes publiques
  • Toutes les fonctions/classes publiques ont une docstring Google Style

Tests

  • J'ai ajouté des tests unitaires pour tous mes changements
  • Tous les tests existants passent (pytest)
  • La couverture de code ne régresse pas (pytest --cov)

Documentation

  • J'ai mis à jour la documentation si nécessaire
  • J'ai ajouté des exemples si la fonctionnalité est nouvelle

Git

  • Ma branche est à jour avec develop (pas de conflits)
  • Mes commits suivent la convention type(scope): description
  • Il n'y a pas de commits de debug ou temporaires


Notes pour le reviewer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant