summaryrefslogtreecommitdiff
path: root/20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml
diff options
context:
space:
mode:
Diffstat (limited to '20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml')
-rw-r--r--20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml38
1 files changed, 38 insertions, 0 deletions
diff --git a/20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml b/20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml
new file mode 100644
index 0000000..47497d5
--- /dev/null
+++ b/20-implementierungsheft/assets/diagrams/sequencediagram-getEpisodeActions.puml
@@ -0,0 +1,38 @@
+@startuml
+
+' title =**Get All Episode Actions**
+
+participant EpisodeActionController << (C, #ADD1B2) @Controller >>
+-> EpisodeActionController: ""GET /api/2/episodes/{username}.json"" \n//@RequestParam("device") String deviceID// \n//@RequestParam("aggregated") boolean aggregated// \n\n-> getEpisodeActions(""username"", //deviceID//, //aggregated//)
+note right
+ Die Parameter //deviceID// und //aggregated// werden ignoriert,
+ da nicht zwischen Geräten unterschieden und für jede
+ Episode sowieso nur die letzte Play-Action gespeichert
+ wird. Dies gilt für alle GET-Anfragen der Episode Actions API.
+end note
+activate EpisodeActionController
+participant EpisodeActionService << (C, #ADD1B2) @Service >>
+EpisodeActionController -> EpisodeActionService: getEpisodeActions(""username"")
+activate EpisodeActionService
+participant EpisodeActionDataAccessService << (C, #ADD1B2) @Repository >>
+EpisodeActionService -> EpisodeActionDataAccessService: getEpisodeActions(""username"")
+activate EpisodeActionDataAccessService
+EpisodeActionDataAccessService -> EpisodeActionDataAccessService: getEpisodeActionsSince(""username"", \nLocalDateTime.MIN.toEpochSecond(ZoneOffset.UTC))
+database Database
+activate EpisodeActionDataAccessService
+EpisodeActionDataAccessService -> Database: get all EpisodeActions for all subscribed podcasts
+activate Database
+Database --> EpisodeActionDataAccessService: List<EpisodeAction> selectedEpisodeActions \n-> then remove all older than LocalDateTime.MIN (none)
+EpisodeActionDataAccessService -> Database: join EpisodeActions in selectedEpisodeActions with episodeURL of Episode
+Database --> EpisodeActionDataAccessService
+deactivate Database
+EpisodeActionDataAccessService --> EpisodeActionDataAccessService: List<EpisodeActionPost> episodeActionPosts
+deactivate EpisodeActionDataAccessService
+EpisodeActionDataAccessService --> EpisodeActionService: List<EpisodeActionPost> episodeActionPosts
+deactivate EpisodeActionDataAccessService
+EpisodeActionService --> EpisodeActionController: List<EpisodeActionPost> episodeActionPosts
+deactivate EpisodeActionService
+<-- EpisodeActionController: ResponseEntity<EpisodeActionGetResponse> response \n\n-> ""HTTP status code"" \n-> ""JSON""
+deactivate EpisodeActionController
+
+@enduml \ No newline at end of file