From f82c425e302bdc4e7e0969c2e00edb1dee8b41b8 Mon Sep 17 00:00:00 2001 From: Corentin R <76619184+Koroh63@users.noreply.github.com> Date: Sun, 26 Mar 2023 21:49:39 +0200 Subject: [PATCH] modification README --- README.md | 81 +++++++++++++----- .../champion.db-shm | Bin .../champion.db-wal | 0 3 files changed, 59 insertions(+), 22 deletions(-) rename Sources/{API_LoL => EntityFramework}/champion.db-shm (100%) rename Sources/{API_LoL => EntityFramework}/champion.db-wal (100%) diff --git a/README.md b/README.md index 9698acb..1d8c3ce 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Projet d'Entity FrameWork et Consomation et Développement de services -Notre projet à pour objectif la liaison entre une base de donnée et un client, par l'utilisation d' ``EntityFramework`` et d'une ``API`` C# créé par nous même. +Notre projet à pour objectif la liaison entre une base de donnée et un client, par l'utilisation d' ``EntityFramework`` et d'une ``API`` C#. ![C#](https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge&logo=c-sharp&logoColor=white) ![JWT](https://img.shields.io/badge/JWT-black?style=for-the-badge&logo=JSON%20web%20tokens) @@ -9,19 +9,13 @@ Notre projet à pour objectif la liaison entre une base de donnée et un client, > *A noter que seul la v1 est prise en compte, la v2 et v2.2 ne sont presentes uniquement pour prouver notre capacité à versionner* -Ce projet est decoupé en deux parties : +### Ce projet est decoupé en deux parties : -## :alien: Consomation et Développement de services :construction_worker: +# :alien: Consomation et Développement de services :construction_worker: +### :checkered_flag: État des livrables : -#### :steam_locomotive: Comment lancer le projet ? -> (Explication...) :construction: - - -#### :checkered_flag: État des livrables : - -:construction: > * :heavy_check_mark: Mise en place de toutes les opérations CRUD > * :heavy_check_mark: API RESTful (respect des règles de routage, utilisation des bons status code ...) > * :heavy_exclamation_mark: Utilisation des fichiers configurations @@ -42,10 +36,10 @@ Ce projet est decoupé en deux parties : --- -## :package: Entity FrameWork :construction_worker: -:construction: +# :package: Entity FrameWork :construction_worker: + -#### :checkered_flag: État des livrables : +### :checkered_flag: État des livrables : Partie 1 : * Exo1 : :construction: @@ -83,12 +77,13 @@ Partie 2 : Ajouter le paterne UnitOfWork (rollback en cas de probleme sur les transaction) --- -#### Diagramme d'architechture : +### Diagramme d'architechture : ![](./docAsset/Diagramme%20d'architecture.jpg) Le schéma ci-dessus décris l'architecture finale que doit avoir le projet, -Tout en haut, la partie client est composé du client MAUI et et du client Console, ceux-ci permettent l'affichage des ressources, l'utilisation de l'architecture et donc de tester si tout le projet fonctionne. Celui-ci utilise le HTTPDataManager qui lui permet d'effectuer les requêtes à l'API afin de récupérer les données. Il hérite de IDataManager et peux donc être remplacé par EFDataManager, court-circuitant ainsi l'API ou par StubLib, n'utilisant pas l'API et l'EF. Le DataManager utilise l'une des extensions mapper pour convertir les objets DTO en Model. +# Implémentation attendue : +Tout en haut du schéma, la partie client est composé du client MAUI et et du client Console, ceux-ci permettent l'affichage des ressources, l'utilisation de l'architecture et donc de tester si tout le projet fonctionne. Celui-ci utilise le HTTPDataManager qui lui permet d'effectuer les requêtes à l'API afin de récupérer les données. Il hérite de IDataManager et peux donc être remplacé par EFDataManager, court-circuitant ainsi l'API ou par StubLib, n'utilisant pas l'API et l'EF. Le DataManager utilise l'une des extensions mapper pour convertir les objets DTO en Model. > On indique aux client d'utiliser le HttpDataManager : builder.Services.AddScoped(); @@ -98,25 +93,67 @@ En second, la partie API, celle-ci s'occupe de recevoir les requêtes et de renv builder.Services.AddScoped(); -## Explication de ce qu'on a fait et ce qu'on a pas fait et pourquoi on a priorisé ca plutot que d'autre : +Enfin, le dernier service implémenté est EntityFramework, l'ORM utilisé pour communiquer avec la base de données, celle-ci elle-même basé sur les données du StubLib grâce à la méthode HasData dans notre DbContext, il récupère et enregistre les objets Entity grâce aux DBSet d'objets. La fluent API permet de définir précisement les attributs de la base de données +# Implémentation Réelle + + +Actuellement, l'entiereté du projet est relié ensemble, cependant les fonctionnalités n'ont été implémentés que partielement, suite à un manque de temps nous avons préféré effectuer le squelette du projet et de relier l'ensemble plutôt que de rajouter des méthodes qui ne seraient pas utilisées. + +## 1 - **Clients** +Premièrement, les clients, ils dépendent de l'implémentation de HTTPDataManager : + +Le client MAUI : Suite à des difficultées de compatibilité et par manque de temps nous n'avons pas pu l'implémenter après plusieurs essais, le client console le remplace donc. + +Le client console est fonctionnel mais ne peut effectuer que peu de méthodes dans sont menu textuel : +- Compter les champions +- Afficher les champions +- Afficher les skills d'un champion + +## 2 - **API** + +L'**HTTPDataManger** permet d'appeler les méthodes basiques de la partie Champion de l'API. + +L'**API** ne présente qu'un seul controlleur, celui de champion. Nous avons préféré faire un seul complet plutôt que plusieurs incomplets. Celui-ci a l'utilisation des **logs**, des **codes de retours** et respecte les **règles Rest**, celui-ci implémentant les méthodes **CRUD**. Une seconde **version** est disponible pour implémenter un versionning. +La méthode GET permet le **filtrage et la pagination** des données, ces méthodes sont **testées unitairement** et l'API est **déployé** avec le projet en conteneur. + +## 3 - **EntityFramework** +L'**EFDataManger** permet d'effectuer les méthodes CRUD sur EntityFramework. + +L'**EntityFramework** a été implémenté avec toutes les classes **Entity** dérivant du modèle, en utilisant **OneToMany** et **ManyToMany** de facon dérivé de celle prévue. Elle est utilsé sur **base** du stub et est **testé** unitairement grâce à **SQLiteInMemory**. Ces méthodes **CRUD** sont implémentées grâce à l'utilisation de l'**EFDataManager**, le *Mapper* entre entity et model est alors requis. Enfin il est **deployé**, cependant nous n'avons pas eu le temps d'aborder le pattern ***UnitOfWork***. +# :rocket: Comment lancer le projet +## 1 - Cloner le dépot + +Premièrement il faut cloner le depot git à l'addresse suivant : + + git clone https://codefirst.iut.uca.fr/git/corentin.richard/EntityFramework_ConsoDeServices_TP.git + +## 2 - Ouvir le projet avec VisualStudio + +clique droit sur le dossier cloné > ouvrir avec Visual Studio + +## 3 - Configurer le démarrage du projet + +> clique droit sur le projet dans l'explorateur de solution > Configure Startup Projects ... > Multpile Startup Project + +Et mettez l'action Start à LoLAPI et à ConsoleApplication(c#) ou LoLApp(MAUI) + +## 4 - Lancement du projet + +Vous pouvez alors lancer le projet grâce à la flèche verte, bonne navigation ! :construction: -## Coordonnées : +# Développeurs : ``Corentin Richard`` : **[corentin.richard@etu.uca.fr](https://codefirst.iut.uca.fr/git/corentin.richard)** ``Pierre Ferreira`` : **[pierre.ferreira@etu.uca.fr](https://codefirst.iut.uca.fr/git/pierre.ferreira)** ---- -# Sujet principal : - ---- -# prepaLoL +# Diagrammes du Model Initial ## Diagramme de classes du modèle ```mermaid diff --git a/Sources/API_LoL/champion.db-shm b/Sources/EntityFramework/champion.db-shm similarity index 100% rename from Sources/API_LoL/champion.db-shm rename to Sources/EntityFramework/champion.db-shm diff --git a/Sources/API_LoL/champion.db-wal b/Sources/EntityFramework/champion.db-wal similarity index 100% rename from Sources/API_LoL/champion.db-wal rename to Sources/EntityFramework/champion.db-wal