47 lines
1.1 KiB
Text
47 lines
1.1 KiB
Text
@startuml CrowdSubscription Create Sequence
|
|
|
|
actor "client" as U
|
|
participant "CrowdSubscription" as CS
|
|
participant "API5" as API
|
|
participant "MongoDB\ncrowd_subscription" as DB
|
|
|
|
U -> CS: create(email, camera_id, email_enabled=True)
|
|
|
|
CS -> API: get_api_client()
|
|
activate API
|
|
|
|
CS -> API: User.get_id(login=email)
|
|
API --> CS: user_id
|
|
|
|
CS -> API: Camera({'id': camera_id}).get(projection)
|
|
API --> CS: camera data
|
|
deactivate API
|
|
|
|
CS -> DB: find_one(проверка на существующую подписку)
|
|
DB --> CS: existing_doc or None
|
|
|
|
alt Подписка уже есть
|
|
CS --> U: raise CrowdSubscriptionAlreadyExists
|
|
else Подписки нет
|
|
CS -> CS: create document
|
|
|
|
note right of CS
|
|
{
|
|
owner_id: camera['owner_id']
|
|
created_at: time.time()
|
|
subscriber_id: user_id
|
|
subscriber_login: email
|
|
telegram_confirmed: False
|
|
camera_id: camera_id
|
|
email_enabled: email_enabled
|
|
}
|
|
end note
|
|
|
|
|
|
CS -> DB: insert_with_random_id(doc)
|
|
DB --> CS: inserted_doc
|
|
|
|
CS --> U: CrowdSubscription(data=doc)
|
|
end
|
|
|
|
@enduml
|