pub struct SqliteIssueStore { /* private fields */ }Expand description
SQLite-backed persistent IssueStore.
Open with SqliteIssueStore::open (file path) or
SqliteIssueStore::open_in_memory (tests). Both return the store plus an
AsyncIsleDriver the caller must shutdown().await when done — dropping
the driver without a shutdown call leaves the SQLite thread as-is until the
process exits.
Implementations§
Source§impl SqliteIssueStore
impl SqliteIssueStore
Sourcepub async fn open(
path: impl AsRef<Path>,
) -> Result<(Self, AsyncIsleDriver), IssueStoreError>
pub async fn open( path: impl AsRef<Path>, ) -> Result<(Self, AsyncIsleDriver), IssueStoreError>
Open (or create) a SQLite database file and run the schema migrations.
Sourcepub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), IssueStoreError>
pub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), IssueStoreError>
Open an ephemeral in-memory database (tests, doctests).
Trait Implementations§
Source§impl IssueStore for SqliteIssueStore
impl IssueStore for SqliteIssueStore
Source§fn create<'life0, 'async_trait>(
&'life0 self,
payload: IssuePayload,
) -> Pin<Box<dyn Future<Output = Result<(), IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create<'life0, 'async_trait>(
&'life0 self,
payload: IssuePayload,
) -> Pin<Box<dyn Future<Output = Result<(), IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Submit a new Issue with
status = Pending.Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
) -> Pin<Box<dyn Future<Output = Result<IssuePayload, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
) -> Pin<Box<dyn Future<Output = Result<IssuePayload, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch the Issue body.
Source§fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
) -> Pin<Box<dyn Future<Output = Result<IssueStatus, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
) -> Pin<Box<dyn Future<Output = Result<IssueStatus, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetch the Issue’s status; returns
NotFound when absent.Source§fn list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(IssueId, IssueStatus)>, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(IssueId, IssueStatus)>, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List every Issue in insertion order — for audit and debug.
Source§fn pop_pending<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<IssuePayload>, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pop_pending<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<IssuePayload>, IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Pop one pending Issue (FIFO) — used by
EnhancePP for
dispatch. Transitions the status to InFlight on pop. Returns
Ok(None) when there is no work.Source§fn update_status<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
status: IssueStatus,
) -> Pin<Box<dyn Future<Output = Result<(), IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn update_status<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 IssueId,
status: IssueStatus,
) -> Pin<Box<dyn Future<Output = Result<(), IssueStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Update an Issue’s status — the terminal transitions to
Applied / Rejected and so on.Auto Trait Implementations§
impl Freeze for SqliteIssueStore
impl RefUnwindSafe for SqliteIssueStore
impl Send for SqliteIssueStore
impl Sync for SqliteIssueStore
impl Unpin for SqliteIssueStore
impl UnsafeUnpin for SqliteIssueStore
impl UnwindSafe for SqliteIssueStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more