Skip to content

Latest commit

 

History

History
347 lines (271 loc) · 8.67 KB

flow.md

File metadata and controls

347 lines (271 loc) · 8.67 KB

Flow

This document describes how the flow of data works from the database, to a view, to the API, to the front end.

Note for this diagram to render correctly, you must have the mermaid extension installed in your markdown viewer.

This diagram may not render well in VSCode. You may prefer to view it online from the mermaid live editor. Copy the code below into the live viewer.

classDiagram
    class DB Account{
        Username
        PasswordHash
        UserId
    }

    class DB Character{
        CharId
        CharName
        UserId
        WeaponId
    }

    class DB Weapon{
        WeaponId
        WeaponName
        WeaponDesc
        ImageURL
        ObtainMethod
        StatAttack
    }

    class DB Unlocks Weapon{
        WeaponId
        AdvancementId
    }

    class DB Completes{
        CharId
        AdvancementId
    }

    class DB Advancement{
        Name
        AdvancementId
    }

    class DB Equips{
        CharId
        AccessoryId
    }

    class DB Accessory{
        AccessoryId
        AccessoryName
        AccessoryDesc
        StatBonus
        ObtainMethod
        ImageURL
    }

    class DB UnlocksAccessory{
        AccessoryId
        AdvancementId
    }

    class DB Wears{
        CharId
        ArmorId
    }

    class DB Armor{
        ArmorId
        ArmorName
        ArmorDesc
        ImageURL
        StatDefense
        ObtainMethod
        ArmorSlot
        StatBonus
    }

    class DB UnlocksArmor{
        ArmorId
        AdvancementId
    }

    class DB UserSession{
        UserId
        Token
    }



    style DBAccount fill:#800,color:#FFF
    style DBCharacter fill:#800,color:#FFF
    style DBWeapon fill:#800,color:#FFF
    style DBUnlocksWeapon fill:#800,color:#FFF
    style DBCompletes fill:#800,color:#FFF
    style DBAdvancement fill:#800,color:#FFF
    style DBEquips fill:#800,color:#FFF
    style DBAccessory fill:#800,color:#FFF
    style DBUnlocksAccessory fill:#800,color:#FFF
    style DBWears fill:#800,color:#FFF
    style DBArmor fill:#800,color:#FFF
    style DBUnlocksArmor fill:#800,color:#FFF
    style DBUserSession fill:#800,color:#FFF




    DB Weapon --> VIEW Character Equipment
    DB Accessory --> VIEW Character Equipment
    DB Armor --> VIEW Character Equipment





    class VIEW Character Equipment{
        List of Armor Names + ID's
        Weapon Name + ID
        List of Accessory Names + ID's
    }

    style VIEWUsersCharacters fill:#880,color:#FFF
    style VIEWCharacterEquipment fill:#880,color:#FFF






    DB Account --> API GET Account
    DB Character --> API GET Account
    DB Character --> API GET Character
    VIEW Character Equipment --> API GET Character
    DB Weapon --> API GET Character
    DB Accessory --> API GET Character
    DB Armor --> API GET Character
    DB Weapon --> API GET Items
    DB Accessory --> API GET Items
    DB Armor --> API GET Items
    DB Weapon --> API GET Item Detail
    DB Accessory --> API GET Item Detail
    DB Armor --> API GET Item Detail

    DB Character --> API DELETE Character
    DB Character --> API POST Character
    DB Account --> API PUT Account
    DB Account --> API DELETE Account
    DB UserSession --> API DELETE Login
    DB Wears --> API DELETE Equipment
    DB Equips --> API DELETE Equipment
    DB Character --> API DELETE Equipment
    DB Wears --> API POST Equipment
    DB Equips --> API POST Equipment
    DB Character --> API POST Equipment
    DB UserSession --> API POST Login
    DB Account --> API POST Account
    DB Account --> API POST Reset Password
    DB UnlocksAccessory --> API GET Item Detail
    DB UnlocksAccessory --> API GET Items
    DB UnlocksArmor --> API GET Item Detail
    DB UnlocksArmor --> API GET Items
    DB Unlocks Weapon --> API GET Item Detail
    DB Unlocks Weapon --> API GET Items
    DB Advancement --> API GET Advancements




    class API GET Account{
        Username
        UserId
        List of Characters Names + ID's
    }

    class API GET Character{
        Name
        List of Armor Names + ID's
        Weapon Name + ID
        List of Accessory Names + ID's
        Statistics
    }

    class API GET Items{
        List of Filtered Items Names + ID's + ImageURL's
    }

    class API GET Item Detail{
        Item Name
        Item Description
        Image URL
        Item Type
        Stat Bonus
        Obtain Method
        Required Advancements
    }




    class API DELETE Character{
        Delete Character(Character ID)
    }

    class API POST Character{
        Add Character(Character Name)
    }

    class API PUT Account{
        Change Password(Old Password, New Password)
        Change Username(New Username)
    }

    class API DELETE Account{
        Delete Account()
    }

    class API DELETE Login{
        Logout()
    }

    class API DELETE Equipment{
        Unequip Item(CharacterId, Item Type, Item Id)
    }

    class API POST Equipment{
        Equip Item(CharacterId, Item Type, Item Id)
    }

    class API POST Login{
        Login(Username, Password)
    }

    class API POST Account{
        Register(Username, Password)
    }

    class API POST Reset Password{
        Reset Password(Username)
    }

    class API GET Advancements{
        List of Advancements
    }



    style APIGETAccount fill:#080,color:#FFF
    style APIGETCharacter fill:#080,color:#FFF
    style APIGETItems fill:#080,color:#FFF
    style APIGETItemDetail fill:#080,color:#FFF
    style APIDELETECharacter fill:#080,color:#FFF
    style APIPOSTCharacter fill:#080,color:#FFF
    style APIPUTAccount fill:#080,color:#FFF
    style APIDELETEAccount fill:#080,color:#FFF
    style APIDELETELogin fill:#080,color:#FFF
    style APIDELETEEquipment fill:#080,color:#FFF
    style APIPOSTEquipment fill:#080,color:#FFF
    style APIPOSTLogin fill:#080,color:#FFF
    style APIPOSTAccount fill:#080,color:#FFF
    style APIPOSTResetPassword fill:#080,color:#FFF
    style APIGETAdvancements fill:#080,color:#FFF




    API GET Account --> Frontend Account
    API GET Character --> Frontend Character
    API GET Items --> Frontend Home
    API GET Item Detail --> Frontend Item Detail
    API GET Advancements --> Frontend Home

    API DELETE Character --> Frontend Account
    API POST Character --> Frontend Account
    API PUT Account --> Frontend Account
    API DELETE Account --> Frontend Account
    API DELETE Login --> Frontend Account
    API DELETE Equipment --> Frontend Character
    API DELETE Login --> Frontend Character
    API POST Equipment --> Frontend Home
    API DELETE Login --> Frontend Home
    API POST Equipment --> Frontend Item Detail
    API DELETE Login --> Frontend Item Detail
    API POST Login --> Frontend Login
    API POST Account --> Frontend Login
    API POST Reset Password --> Frontend Login





    class Frontend Account{
        Get Account - Username(Token)
        Get Account - List of Characters Names + ID's(Token)
        Delete Character(Token, Character ID)
        Post Character - Add Character(Token, Character Name)
        Put Account - Change Password(Token, Old Password, New Password)
        Put Account - Change Username(Token, New Username)
        Delete Account - Delete Account(Token)
        Delete Login - Logout(Token)
    }

    class Frontend Character{
        Get Character - Name(Token, Character ID)
        Get Character - List of Armor Names + ID's(Token, Character ID)
        Get Character - Weapon Name + ID(Token, Character ID)
        Get Character - List of Accessory Names + ID's(Token, Character ID)
        Get Character - Statistics(Token, Character ID)
        Delete Equipment - Unequip Item(Token, Character ID, Item Type, Item ID)
        Delete Login - Logout(Token)
    }

    class Frontend Home{
        Get Items - List of Filtered Items Names + ID's + ImageURL's(Token, Filters JSON)
        Get Advancements - List of Advancements(Token)
        Post Equipment - Equip Item(Token, CharacterId, Item Type, Item Id)
        Delete Login - Logout(Token)
    }

    class Frontend Item Detail{
        Get Item - Item Name
        Get Item - Item Description
        Get Item - Image URL
        Get Item - Item Type
        Get Item - Stat Bonus
        Get Item - Obtain Method
        Get Item - Required Advancements
        Post Equipment - Equip Item(Token, Item Type, Item ID)
        Delete Login - Logout(Token)
    }

    class Frontend Login{
        Post Login(Username, Password)
        Post Account - Register(Username, Password)
        Post Reset Password(Username)
    }

    style FrontendAccount fill:#008,color:#FFF
    style FrontendCharacter fill:#008,color:#FFF
    style FrontendHome fill:#008,color:#FFF
    style FrontendItemDetail fill:#008,color:#FFF
    style FrontendLogin fill:#008,color:#FFF
Loading