Skip to content

Commit c816501

Browse files
author
Anna Mikhaylova
committed
[DOP-27543] mermaid diagram
1 parent 318de93 commit c816501

File tree

5 files changed

+283
-3
lines changed

5 files changed

+283
-3
lines changed

mddocs/docs/en/design/entities/index.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,89 @@ Transfers cannot be created without queue. If there are no workers bound to a qu
161161
162162
@enduml
163163
```
164+
165+
```mermaid
166+
---
167+
title: Entity Diagram
168+
---
169+
erDiagram
170+
direction LR
171+
User {
172+
id
173+
username
174+
is_active
175+
is_superuser
176+
created_at
177+
updated_at
178+
}
179+
180+
Group {
181+
id
182+
name
183+
description
184+
owner_id
185+
created_at
186+
updated_at
187+
}
188+
189+
Connection {
190+
id
191+
group_id
192+
type
193+
name
194+
description
195+
data
196+
created_at
197+
updated_at
198+
}
199+
200+
Queue {
201+
id
202+
name
203+
slug
204+
description
205+
created_at
206+
updated_at
207+
}
208+
209+
210+
Transfer {
211+
id
212+
group_id
213+
name
214+
source_connection_id
215+
target_connection_id
216+
strategy_params
217+
target_params
218+
transformations
219+
resources
220+
is_scheduled
221+
schedule
222+
queue_id
223+
created_at
224+
updated_at
225+
}
226+
227+
Run {
228+
id
229+
transfer_id
230+
started_at
231+
ended_at
232+
status
233+
type
234+
log_url
235+
transfer_dump
236+
created_at
237+
updated_at
238+
}
239+
240+
Run ||--o{ Transfer: contains
241+
242+
Transfer ||--o{ Queue: contains
243+
Transfer ||--o{ Connection: contains
244+
Transfer ||--o{ Group: contains
245+
Connection ||--o{ Group: contains
246+
Queue ||--o{ Group: contains
247+
Group }o--o{ User: contains
248+
Group ||--o{ User: contains
249+
```

mddocs/docs/en/reference/database/structure.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,108 @@
121121
122122
@enduml
123123
```
124+
125+
```mermaid
126+
---
127+
title: Database structure
128+
---
129+
erDiagram
130+
direction LR
131+
User_Group {
132+
bigint user_id PK
133+
bigint group_id PK
134+
varchar(255) role_id
135+
}
136+
137+
User {
138+
bigint id PK
139+
varchar(256) username
140+
varchar(256) email null
141+
varchar(256) first_name null
142+
varchar(256) last_name null
143+
varchar(256) middle_name null
144+
boolean is_superuser
145+
boolean is_active
146+
timestamp created_at
147+
timestamp updated_at
148+
}
149+
150+
Group {
151+
bigint id PK
152+
varchar(256) name
153+
varchar(512) description
154+
bigint owner_id
155+
timestamptz created_at
156+
timestamptz updated_at
157+
tsquery search_vector
158+
}
159+
160+
Queue {
161+
bigint id PK
162+
varchar(128) name
163+
varchar(256) slug
164+
bigint group_id
165+
varchar(512) description
166+
timestamptz created_at
167+
timestamptz updated_at
168+
}
169+
170+
Connection {
171+
bigint id PK
172+
bigint group_id
173+
varchar(32) type
174+
varchar(123) name
175+
varchar(512) description
176+
json data
177+
timestamptz created_at
178+
timestamptz updated_at
179+
tsquery search_vector
180+
}
181+
182+
Auth_data {
183+
bigint connection_id PK
184+
text value
185+
timestamptz created_at
186+
timestamptz updated_at
187+
}
188+
189+
Transfer {
190+
bigint id PK
191+
bigint group_id
192+
varchar(128) name
193+
bigint source_connection_id
194+
bigint target_connection_id
195+
json strategy_params
196+
json target_params
197+
json transformations
198+
json resources
199+
boolean is_scheduled
200+
varchar(32) schedule
201+
bigint queue_id
202+
timestamptz created_at
203+
timestamptz updated_at
204+
}
205+
206+
Run {
207+
bigint id PK
208+
transfer_id bigint
209+
timestamptz started_at
210+
timestamptz ended_at
211+
varchar(255) status
212+
varchar(64) type_run
213+
json transfer_dump
214+
timestamptz created_at
215+
timestamptz updated_at
216+
}
217+
218+
User_Group ||--o{ User: contains
219+
User_Group ||--o{ Group: contains
220+
Group ||--o{ User: contains
221+
Queue ||--o{ Group: contains
222+
Connection ||--o{ Group: contains
223+
Auth_data ||--o{ Connection: contains
224+
Transfer ||--o{ Queue: contains
225+
Transfer ||--o{ Connection: contains
226+
Transfer ||--o{ Group: contains
227+
Run ||--o{ Transfer: contains
228+
```

mddocs/docs/en/reference/server/auth/dummy.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,45 @@ After successful auth, username is saved to server database.
6969
@enduml
7070
```
7171

72+
```mermaid
73+
sequenceDiagram
74+
participant "Client"
75+
participant "Server"
76+
activate "Client"
77+
alt Successful case
78+
"Client" ->> "Server" : login + password
79+
"Server" ->> "Server" : Password is completely ignored
80+
"Server" ->> "Server" : Check user in internal server database
81+
"Server" ->> "Server" : Create user if not exist
82+
else
83+
"Client" ->> "Server" : login + password
84+
"Server" ->> "Server" : Password is completely ignored
85+
"Server" ->> "Server" : Check user in internal server database
86+
else
87+
"Client" ->> "Server" : login + password
88+
"Server" ->> "Server" : Password is completely ignored
89+
"Server" ->> "Server" : Check user in internal server database
90+
end
91+
alt Successful case
92+
"Client" ->> "Server" : access_token
93+
"Server" ->> "Server" : Validate token
94+
"Server" ->> "Server" : Check user in internal server database
95+
"Server" ->> "Server" : Get data
96+
else
97+
"Client" ->> "Server" : access_token
98+
"Server" ->> "Server" : Validate token
99+
else
100+
"Client" ->> "Server" : access_token
101+
"Server" ->> "Server" : Validate token
102+
"Server" ->> "Server" : Check user in internal server database
103+
else
104+
"Client" ->> "Server" : access_token
105+
"Server" ->> "Server" : Validate token
106+
"Server" ->> "Server" : Check user in internal server database
107+
end
108+
deactivate "Client"
109+
```
110+
72111
## Configuration { #server-auth-dummy-configuration }
73112

74113
::: syncmaster.server.settings.auth.dummy.DummyAuthProviderSettings

mddocs/docs/en/reference/server/auth/keycloak/index.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,56 @@ You can follow interaction schema below.
6969
@enduml
7070
```
7171

72+
```mermaid
73+
sequenceDiagram
74+
participant "Client (User from Browser)" as Client
75+
participant "Syncmaster"
76+
participant "Keycloak"
77+
78+
Client ->> Syncmaster : Request endpoint that requires authentication (/v1/users)
79+
80+
Syncmaster --x Client: Redirect to Keycloak login URL (if no access token)
81+
82+
Client ->> Keycloak : Callback redirect to Keycloak login page
83+
84+
alt Successful login
85+
Client ->> Keycloak : Log in with login and password
86+
else Login failed
87+
Keycloak --x Client: Display error (401 Unauthorized)
88+
end
89+
90+
Keycloak ->> Client : Redirect to Syncmaster to callback endpoint with code
91+
Client ->> Syncmaster : Callback request to /v1/auth/callback with code
92+
Syncmaster->> Keycloak : Exchange code for access token
93+
Keycloak ->> Syncmaster : Return JWT token
94+
Syncmaster ->> Client : Set JWT token in user's browser in cookies and redirect /v1/users
95+
96+
Client ->> Syncmaster : Redirect to /v1/users
97+
Syncmaster ->> Syncmaster : Get user info from JWT token and check user in internal server database
98+
Syncmaster ->> Syncmaster : Create user in internal server database if not exist
99+
Syncmaster ->> Client: Return requested data
100+
101+
102+
alt Successful case
103+
Client ->> Syncmaster : Request data with JWT token
104+
Syncmaster ->> Syncmaster : Get user info from JWT token and check user in internal server database
105+
Syncmaster ->> Syncmaster : Create user in internal server database if not exist
106+
Syncmaster ->> Client: Return requested data
107+
108+
else Access token is expired
109+
Syncmaster ->> Keycloak : Get new JWT token via refresh token
110+
Keycloak ->> Syncmaster : Return new JWT token
111+
Syncmaster ->> Syncmaster : Get user info from JWT token and check user in internal server database
112+
Syncmaster ->> Syncmaster : Create user in internal server database if not exist
113+
Syncmaster ->> Client: Return requested data and set new JWT token in user's browser in cookies
114+
115+
else Refresh token is expired
116+
Syncmaster --x Client: Redirect to Keycloak login URL
117+
end
118+
119+
deactivate Client
120+
```
121+
72122
## Basic configuration { #keycloak-auth-provider-basic-configuration }
73123

74124
::: syncmaster.server.settings.auth.keycloak.KeycloakAuthProviderSettings

mddocs/mkdocs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
site_name: My Docs
2-
#site_name: Horizon Docs
3-
docs_dir: 'docs/en' # Where to find the English markdown files
4-
#site_dir: 'generated/en' # Where to put the English HTML files
2+
#site_name: Syncmaster Docs
53

4+
docs_dir: 'mddocs/docs/en' # Where to find the English markdown files
5+
#site_dir: 'generated/en' # Where to put the English HTML files
66

77
extra_css:
88
- assets/stylesheets/autodoc_pydantic.css # CSS is shared by all languages

0 commit comments

Comments
 (0)