sandbox/ivideon/puml/Crowd/notifications/9205_sub_sequence.puml

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