# Monster Trading Card Game Created by *Georg Reisinger* * RestServer von https://github.com/DerGeorg/RESTServer * MTCG Git Repo https://github.com/DerGeorg/SWE1-MTCG * JavaDoc online auf: http://mtcg.dergeorg.at * Postgres Server läuft auf einem Raspberry Pi 4 --> http://postgres.dergeorg.at * User Table * *Alle User die in MTCG registriert sind* * User_cards Table * *Alle Cards der User* * User_deck Table * *Deck der User* * Battle Table * *Battle Einladungen* * Battle_log Table * *Nach beendetem battle wird hier das Log gespeichert* * Package Table * *Alle Packages die die User bekommen können* * Card Table * *Alle Cards die in dem Spiel verwendet werden* * *Typ der Card wird automatisch in Card und Element Typ getrennt* * Trading Table * *Alle aktiven Trading deals* ## Protokoll *Um für Testzwecke die DB zu leeren, die Route DELETE /db/all beachten. Setzt die DB zurück und erstellt alle Tabellen neu.* #### Cards * Card Type (z.B. FireSpell) wird zu ElementTyp(Fire) und CardType(Spell) aufgespalten * Alle Cards sind in der Cards Tabelle gespeichert * Wenn ein User Cards acquired, dann wird das passende package gelöscht und die Cards in seine user_card Table geschrieben #### Deck * Die Deckkarten werden in der Tabelle User_deck gespeichert * Wird eine Card getradet, die im Deck ist, so wird das Deck des Users zurückgesetzt * Wird ein Battle begonnen, dann muss der user 4 cards im deck haben. #### Battle * Beginnt ein User ein Battle und ist der erste, so wird in der Battle tabelle eine "Einladung" erstellt. Die Einladung besteht aus: **Username, Userdeck, Battleid** * Beginnt ein 2. User ein Battle, so sieht er das in der Battle Tabelle ein Spiel ohne 2. spieler ist, und kann beitreten. #### Score & Stats * Score zeigt das Ergebnis des letzten spieles an * Stats zeigt die Ergebnisse aller vergangen Spiele ## API Beschreibung #### GET | ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER | |--------------------|------------------------------------|-----------|-------------------------|------------------------------------------------------| | /cards | show all acquired cards | / | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" | | /deck | show deck | / | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" | | /deck?format=plain | show deck different representation | / | Card names Array | --header "Authorization: Basic kienboec-mtcgToken" | | /users/{username} | get user | / | User Object | --header "Authorization: Basic kienboec-mtcgToken" | | /stats | get stats about all battles | / | All battle Logs | --header "Authorization: Basic kienboec-mtcgToken" | | /score | get score, about last battle | / | Last Battle Log | --header "Authorization: Basic kienboec-mtcgToken" | | /tradings | get trading deals | / | List TradingDeal Object | --header "Authorization: Basic kienboec-mtcgToken" | #### POST | ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER | |------------------------|---------------------------|--------------------------------------|---------------------|------------------------------------------------------| | /users | create user | Username, Password | User Object | / | | /sessions | login user | Username, Password | login token | / | | /packages | create package | [ID, Name, Damage]x5 | Package Object | --header "Authorization: Basic admin-mtcgToken" | | /transactions/packages | acquire packages kienboec | / | Package Object | --header "Authorization: Basic kienboec-mtcgToken" | | /battles | Battle | / | Anweisungen String | --header "Authorization: Basic kienboec-mtcgToken" | | /tradings | create tradingdeal | Id, CardToTrade, Type, MinimumDamage | TradingDeal Object | --header "Authorization: Basic kienboec-mtcgToken" | | /tradings/{TradeID} | Do Trade | CardID | New Card Object | --header "Authorization: Basic kienboec-mtcgToken" | #### PUT | ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER | |-------------------|----------------|------------------|--------------|------------------------------------------------------| | /deck | configure deck | [ID, ID, ID, ID] | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" | | /users/{username} | / | Name, Bio, Image | User Object | --header "Authorization: Basic kienboec-mtcgToken" | #### DELETE | ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER | |---------------------|---------------------|-----------|--------|------------------------------------------------------| | /tradings/{TradeID} | delete trading deal | / | / | --header "Authorization: Basic kienboec-mtcgToken" | | /db/all | Reset DB + Recreate | / | / |--header "Authorization: Basic admin-mtcgToken" | ## Insomnia Requests Basierend auf dem [Curl Script](https://github.com/DerGeorg/SWE1-MTCG/blob/master/curl.bat) habe ich die Requests in Insomnia erstellt. [Öffne insomnia.json](https://github.com/DerGeorg/SWE1-MTCG/blob/master/insomnia.json) ## UML * [UML.png](https://github.com/DerGeorg/SWE1-MTCG/blob/master/UML2021.png) * [UML.svg](https://github.com/DerGeorg/SWE1-MTCG/blob/master/UML2021.svg) ![UML2021.svg](UML2021.svg)