Something went wrong

Thank you for being patient! We're working hard on resolving the issue

Connector module - Lona Docs Log in

Google connector module

Behind features = ["connector"]. Maps :~google:{authId}:calendar:{calId}:events onto the tento-lona-connector trait surface.

What's exposed

tento_google::connector::{
  GoogleCalendar,            // Integration marker
  GoogleClient,              // empty grab-bag; host deps do the work
  GoogleBackendDeps,         // host-implemented calendar behavior
  GoogleCalendarParams,      // authId + calId path params
  GoogleAuth,                // AuthProvider marker
  events::Events,            // calendar events Row
}

GoogleBackendDeps

The connector is intentionally thin. Row bodies delegate to host methods:

pub trait GoogleBackendDeps: Send + Sync {
  fn run_calendar_sync(..., stage: Option<&str>) -> BoxFuture<anyhow::Result<usize>>;
  fn create_calendar_event(..., body: serde_json::Value) -> BoxFuture<anyhow::Result<WriteOutput>>;
  fn update_calendar_event(..., cell_id: &str, body: serde_json::Value) -> BoxFuture<anyhow::Result<WriteOutput>>;
  fn delete_calendar_event(..., cell_id: Option<&str>) -> BoxFuture<anyhow::Result<WriteOutput>>;
  fn recent_log_cells(...) -> BoxFuture<anyhow::Result<Vec<Cell>>>;
}

The host owns event database rows, sync-token handling, Google event mapping, cell persistence, and write-output conversion.

Sync shape

events::Events advertises two stages:

  • viewport for the active visible window.
  • backfill for broader history, locked by calendar so concurrent backfills do not race.

There is no sync-plugin feature for Google. The host supplies the orchestrator executor because the concrete Google client and event mapping are host-shaped.