1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
@startuml
package subscriptionsAPI <<Frame>> {
package subscriptionDataAccessLayer <<Frame>> {
class SubscriptionDataAccessService <<@Repository>> {
<<create>> SubscriptionDataAccessService(JpaTemplate jpaTemplate)
int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
List<String> getSubscriptions(String username)
List<String> getSubscriptionsSince(String username, LocalDateTime time)
int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
List<SubscriptionTitles> getTitles(String username)
}
interface SubscriptionDao {
int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
List<String> getSubscriptions(String username)
List<String> getSubscriptionsSince(String username, LocalDateTime time)
int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
List<SubscriptionTitles> getTitles(String username)
}
}
package subscriptionService <<Frame>> {
class SubscriptionService <<@Service>> {
<<create>> SubscriptionService(SubscriptionDao subscriptionDao)
int uploadSubscriptions(String username, List<SubscriptionAction> subscriptions)
List<String> getSubscriptions(String username)
List<String> getSubscriptionsSince(String username, LocalDateTime time)
int addSubscriptions(String username, List<SubscriptionAction> addedSubscriptions)
int removeSubscriptions(String username, List<SubscriptionAction> removedSubscriptions)
List<SubscriptionTitles> getTitles(String username)
}
}
package subscriptionController <<Frame>> {
class SubscriptionController <<@Controller>>{
' @Autowired
<<create>> SubscriptionController(SubscriptionService subscriptionService)
' @GetMapping
ResponseEntity<List<String>> getSubscriptions(String username, String deviceID, String functionJSONP)
' @PutMapping
ResponseEntity<String> uploadSubscriptions(String username, String deviceID, List<String> subscriptions)
' @PostMapping
ResponseEntity<SubscriptionDelta> applySubscriptionDelta(String username, String deviceID, SubscriptionDelta delta)
' @GetMapping
ResponseEntity<SubscriptionDelta> getSubscriptionDelta(String username, String deviceID, long since)
ResponseEntity<List<SubscriptionTitles>> getTitles(String username, String deviceID)
}
class SubscriptionTitles {
<<create>> SubscriptionTitles(Subscription subscription, List<EpisodeActionPost> episodeTitles)
Subscription getSubscription()
List<EpisodeActionPost> getEpisodesTitles()
}
class SubscriptionDelta {
<<create>> SubscriptionDelta(List<String> add, List<String> remove)
List<String> getRemove()
LocalDate getTimestamp()
List<List<String>> getUpdate_urls()
}
}
}
' Subscription <.. SubscriptionDataAccessService: DB
' SubscriptionAction <.. SubscriptionDataAccessService: DB
SubscriptionService --o SubscriptionController
SubscriptionDao <.. SubscriptionService: <<use>>
SubscriptionDao <|. SubscriptionDataAccessService: <<realize>>
@enduml
|