Skip to content

google_calendar_flow

Kim DongHyun edited this page Feb 25, 2025 · 1 revision

Flow Chart

flowchart TD
    %% Personal Event Flow
    PES[PersonalEventService<br/>createWithRequest]
    InsertEvent[InsertPersonalEvent<br/>Event]
    GEH[GoogleEventHandler]
    GCS_Insert[GoogleCalendarService.insertPersonalEvents]

    %% Google Calendar Flow
    GCS[getCalendarService<br/>getCalendarEvents]
    GoogleEvent[GoogleEventChanged<br/>Event]
    PEH[PersonalEventHandler]
    PES_Sync[PersonalEventService.syncWithGoogleEvents]

    %% Flow for Personal Event → Google Calendar
    PES -->|Saves event & publishes| InsertEvent
    InsertEvent -->|Handled by| GEH
    GEH -->|Calls| GCS_Insert

    %% Flow for Google Calendar → Personal Event
    GCS -->|Fetches events & publishes| GoogleEvent
    GoogleEvent -->|Handled by| PEH
    PEH -->|Calls| PES_Sync
Loading

Sequence Diagram

sequenceDiagram
    participant PES as PersonalEventService
    participant AEP as ApplicationEventPublisher
    participant GEH as GoogleEventHandler
    participant GCS as GoogleCalendarService
    participant PEH as PersonalEventHandler

    %% Flow 1: PersonalEvent creation and sync to Google Calendar
    PES->>PES: createWithRequest(request)
    PES->>AEP: publishEvent(InsertPersonalEvent)
    AEP-->>GEH: Deliver InsertPersonalEvent event
    GEH->>GCS: insertPersonalEvents(personalEventList)
    Note right of GEH: Async & transactional

    %% Flow 2: Google Calendar events and sync to PersonalEvent
    GCS->>GCS: getCalendarEvents(calendarId, user)
    GCS->>AEP: publishEvent(GoogleEventChanged)
    AEP-->>PEH: Deliver GoogleEventChanged event
    PEH->>PES: syncWithGoogleEvents(events, user, calendarId)
Loading

Clone this wiki locally