@@ -22,16 +22,12 @@ workspace "highly-scalable-image-sharing-platform" "This is an example workspace
22
22
imagesProcessingFuncApp = container "Images Processing Func" "Resize images, removes temporary." "Functions, C#"
23
23
postsDatabase = container "Posts Database" "Manage user posts, stores images urls." "NoSQL Document Schema" "Database"
24
24
timelinesApiApp = container "Timelines API" "Provides timelines functionality via a JSON/HTTP API." "ASP .NET API, C#" {
25
- group "Domain" {
26
- timeline = component "Timeline" "Timeline entity logic" "Doman entity" "components,timelines"
27
- influencersPosts = component "Influencers posts" "Influencers posts entity logic" "Doman entity" "components,timelines"
28
- }
29
- timelinesRepository = component "Timelines repository"
25
+ timelinesRepository = component "Timelines repository" "Manages CRUD operations for user timelines, ensuring efficient storage and retrieval in chronological order."
30
26
updatingTimelineConsumer = component "Updating timeline postCreated event consumer" "Triggers updating followers timelines" "MassTransit Consumer" "components,timelines"
31
27
followersTimelineUpdater = component "Followers timeline updater" "Updates followers' timelines with the latest posts from the users they follow" "c# classes" "components,timelines"
32
28
usersClient = component "Users client" "Get users data from users microservice" "HTTP client" "components,timelines"
33
29
34
- influencersPostsRepository = component "Influencers posts repository" "" "" "components,timelines"
30
+ influencersPostsRepository = component "Influencers posts repository" "Manages CRUD operations for influencer posts " "" "components,timelines"
35
31
36
32
getTimelineEndpoint = component "Timelines endpoint" "Handles query requests""Minimal API endpoint" "components,timelines"
37
33
timelineQuery = component "Timelines query" "Build user timeline query"
@@ -95,15 +91,12 @@ workspace "highly-scalable-image-sharing-platform" "This is an example workspace
95
91
# updating timeline
96
92
postsApiApp -> updatingTimelineConsumer "uses" "messages:posts" "components,timelines"
97
93
updatingTimelineConsumer -> followersTimelineUpdater "uses""" "components,timelines"
98
- updatingTimelineConsumer -> timeline "uses" """components,timelines"
99
94
followersTimelineUpdater -> usersClient "uses" """components,timelines"
100
95
usersClient -> usersApiApp "uses" "REST/HTTP" "components,timelines"
101
96
followersTimelineUpdater -> timelinesRepository "uses" "" "components,timelines"
102
97
followersTimelineUpdater -> influencersPostsRepository "uses" "" "components,timelines"
103
- timelinesRepository -> timelinesTable "uses" "" "components,timelines"
104
-
105
- # updating influencers posts
106
- influencersPostsRepository -> influencersPostsTable "uses" "" "components,timelines"
98
+ timelinesRepository -> timelinesDatabase "uses" "" "components,timelines"
99
+ influencersPostsRepository -> timelinesDatabase "uses" "" "components,timelines"
107
100
108
101
# query timelines
109
102
webApp -> getTimelineEndpoint "uses" "REST/HTTP" "components,timelines"
@@ -361,6 +354,13 @@ workspace "highly-scalable-image-sharing-platform" "This is an example workspace
361
354
usersApiApp -> usersClient "Returns user {'type' : 'influencer'}"
362
355
usersClient -> followersTimelineUpdater "Returns user {'type' : 'influencer'}"
363
356
followersTimelineUpdater -> influencersPostsRepository "if user type 'influencer', adds influencer post"
357
+ influencersPostsRepository -> timelinesDatabase "influencers posts table"
358
+ timelinesDatabase -> influencersPostsRepository "Returns"
359
+ influencersPostsRepository -> followersTimelineUpdater "Returns"
360
+ followersTimelineUpdater -> timelinesRepository "Saves timeline"
361
+ timelinesRepository -> timelinesDatabase "timelines table"
362
+ timelinesDatabase -> timelinesRepository "Returns"
363
+ timelinesRepository -> followersTimelineUpdater "Returns"
364
364
autoLayout lr
365
365
}
366
366
@@ -369,11 +369,17 @@ workspace "highly-scalable-image-sharing-platform" "This is an example workspace
369
369
webApp -> getTimelineEndpoint "/timelines/{userId}"
370
370
getTimelineEndpoint -> timelineQuery "Get user timeline by id {userId}"
371
371
timelineQuery -> timelinesRepository "Reads timeline by user id {userId}"
372
+ timelinesRepository -> timelinesDatabase "Reads timelines from table"
373
+ timelinesDatabase -> timelinesRepository "Returns"
374
+ timelinesRepository -> timelineQuery "Returns"
372
375
timelineQuery -> usersClient "Get user influencer folowers"
373
376
usersClient -> usersApiApp "GET /users/{id}/followers?type=influencer"
374
377
usersApiApp -> usersClient "Returns list of influencers"
375
378
usersClient -> timelineQuery "Returns list of influencers"
376
379
timelineQuery -> influencersPostsRepository "if user follows influencers, reads influencer posts"
380
+ influencersPostsRepository -> timelinesDatabase "influencers posts table"
381
+ timelinesDatabase -> influencersPostsRepository "Returns"
382
+ influencersPostsRepository -> timelineQuery "Returns"
377
383
timelineQuery -> getTimelineEndpoint "Returns timeline or if user follows influencers, returns aggregated timeline with influencers posts"
378
384
getTimelineEndpoint -> webApp "Returns timeline"
379
385
autoLayout rl
0 commit comments