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
-
+```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'