pub trait TicketSource: Send + Sync {
// Required methods
fn capabilities(&self) -> Capabilities;
fn fetch_changed<'life0, 'life1, 'async_trait>(
&'life0 self,
cursor: &'life1 Cursor,
) -> Pin<Box<dyn Future<Output = Result<Page>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
uid: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Ticket>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
// Provided methods
fn set_state<'life0, 'life1, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_target: StateCategory,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn comment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_body: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
}Expand description
A source of tickets from an external platform.
Requires Send + Sync (like [gonzalo_core::Store]) so a
Box<dyn TicketSource> can be driven across threads — the daemon ingests
over Send futures on the gRPC and HTTP transports.
Required Methods§
Sourcefn capabilities(&self) -> Capabilities
fn capabilities(&self) -> Capabilities
What this source supports. Callers consult this before attempting writes.
Sourcefn fetch_changed<'life0, 'life1, 'async_trait>(
&'life0 self,
cursor: &'life1 Cursor,
) -> Pin<Box<dyn Future<Output = Result<Page>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn fetch_changed<'life0, 'life1, 'async_trait>(
&'life0 self,
cursor: &'life1 Cursor,
) -> Pin<Box<dyn Future<Output = Result<Page>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Tickets changed since cursor (or all tickets, if the cursor is empty),
plus the cursor to resume incremental sync from.
Provided Methods§
Sourcefn set_state<'life0, 'life1, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_target: StateCategory,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_state<'life0, 'life1, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_target: StateCategory,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Move a ticket to a normalized [StateCategory]. The source resolves this
to its native mechanism (a Jira transition, a GitLab label swap, an Asana
section move). Capability-gated: defaults to Unsupported.
Sourcefn comment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_body: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn comment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_uid: &'life1 str,
_body: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Append a comment to a ticket. Capability-gated: defaults to Unsupported.