diff --git a/README.md b/README.md index c5eb299..deb2939 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,19 @@ # PoKeMoNg + * [About](#about) + + [🗂️ DCM](#-dcm) + + [🧬 UML Class diagram](#-uml-class-diagram) + + [🗺 NoSQL Schema Versioning Strategy](#-nosql-schema-versioning-strategy) + - [Schema Versioning Pattern](#schema-versioning-pattern) + - [Incremental Document Migration](#incremental-document-migration) + * [Prep steps](#prep-steps) + + [♨️ Java version](#-java-version) + + [🔐 Database connection](#-database-connection) + * [Running the application in dev mode](#running-the-application-in-dev-mode) + + [🏴‍☠️ SwaggerUI](#-swaggerui) + + [🩺 API testing tools](#-api-testing-tools) + + [📱 Front end (later)](#-front-end-later) + This is a [Quarkus](https://quarkus.io/) / [MongoDB](https://mongodb.com/) app for educational purposes. Instructions are [here](https://clientserveur-courses.clubinfo-clermont.fr/Notation.html) for reference. @@ -20,9 +34,76 @@ CRUD operations on `Pokemongs`, `Trainers`, `Moves`, and `Types`. ### 🧬 UML Class diagram -UML Class Diagram +```mermaid +classDiagram + +class Trainer { + + id: ObjectId + + name: string + + dob: date + + wins: int + + losses: int +} + +class Pokemong { + + id: ObjectId + + nickname: string? + + dob: date + + level: int + + pokedexId: int + + evoStage: int + + evoTrack: PokemongName[] +} + +class Move { + + id: ObjectId + + name: string + + category: MoveCategoryName + + power: int + + accuracy: int +} + +class Type { + + id: ObjectId + + name: TypeName + + weakAgainst: TypeName[] + + effectiveAgainst: TypeName[] +} + +class TypeName { + <> + + FIRE + + WATER + + ... +} + +class PokemongName { + <> + + BULBASAUR + + IVYSAUR + + ... +} + +class MoveCategoryName { + <> + + PHYSICAL + + SPECIAL + + STATUS +} + +Trainer --> "0..*" Trainer: pastOpponents +Trainer --> "0..*" Pokemong: pokemongs +Pokemong --> "0..1" Trainer: trainer +Pokemong --> "0..4" Move: moveSet +Pokemong --> "1..2" Type: types +Move --> Type: type + +Type ..> TypeName +Pokemong ..> PokemongName +Move ..> MoveCategoryName +``` -### NoSQL Schema Versioning Strategy +### 🗺 NoSQL Schema Versioning Strategy This application uses MongoDB, a NoSQL database, which provides flexibility in our data model. While this flexibility has diff --git a/docs/DB.md b/docs/DB.md index f7dfcb2..6ced79a 100644 --- a/docs/DB.md +++ b/docs/DB.md @@ -64,7 +64,7 @@ * => referencing - [x] pokemongs.types: one-to-few [1;2] * => embedding - - [x] pokemongs.moveSet: one-to-few [1;4] but will also need to be queried independently + - [x] pokemongs.moveSet: one-to-few [0;4] but will also need to be queried independently * => referencing + denormalizing on "name" - Move - [x] moves.type: one-to-one [1;1] diff --git a/docs/mcd.png b/docs/mcd.png index 20e3532..5c35faf 100644 Binary files a/docs/mcd.png and b/docs/mcd.png differ diff --git a/src/main/java/fr/uca/iut/services/PokemongService.java b/src/main/java/fr/uca/iut/services/PokemongService.java index a3c0743..085d300 100644 --- a/src/main/java/fr/uca/iut/services/PokemongService.java +++ b/src/main/java/fr/uca/iut/services/PokemongService.java @@ -93,8 +93,8 @@ public class PokemongService extends GenericService { if (moveSet == null) { errors.add("pokemong move set was null"); } else { - if (moveSet.size() == 0 || moveSet.size() > 4) { - errors.add("pokemong move set was empty or had more than 4 moves"); + if (moveSet.size() > 4) { + errors.add("pokemong move set had more than 4 moves"); } for (PokemongMove move : moveSet) { String moveId = move.getId(); diff --git a/src/main/resources/META-INF/openapi.yaml b/src/main/resources/META-INF/openapi.yaml index ab5d825..ba0cc4b 100644 --- a/src/main/resources/META-INF/openapi.yaml +++ b/src/main/resources/META-INF/openapi.yaml @@ -344,7 +344,6 @@ components: $ref: '#/components/schemas/Type' moveSet: type: array - minItems: 1 maxItems: 4 items: $ref: '#/components/schemas/PokemongMove'