@startuml 'https://plantuml.com/state-diagram 'scale 600 width [*] --> CreateProduct [*] --> LoadAllProducts state CreateProduct { HttpCreateProduct --> CallRpcCreateProduct : RPC CallRpcCreateProduct --> InsertRecord InsertRecord ---> RpcReturnDetailedProduct : RPC InsertRecord ---> ProductCreatedEvent : MQTT RpcReturnDetailedProduct --> [*] ProductCreatedEvent --> [*] } state LoadAllProducts { state "Received Load all HTTP Request" as HttpLoadAll state "Call RPC Load All" as CallRpcLoadAll state "Load add required data from DB" as LoadAllData state "Load all products" as LoadProducts state "Load all variants for all products" as LoadProductsVariants state "Load all products photos" as LoadProductsPhotos HttpLoadAll --> CallRpcLoadAll : RPC CallRpcLoadAll --> LoadAllData LoadAllData --> LoadProducts : concurrently LoadProducts --> CombineData LoadAllData --> LoadProductsVariants : concurrently LoadProductsVariants --> CombineData LoadAllData --> LoadProductsPhotos : concurrently LoadProductsPhotos --> CombineData LoadAllData --> LoadProductsStock : concurrently LoadProductsStock --> CombineData CombineData --> RpcReturnsList : RPC RpcReturnsList --> [*] } @enduml