pub struct TestSchedule {
pub id: Uuid,
pub suite_id: Uuid,
pub cron: String,
pub timezone: String,
pub enabled: bool,
pub last_triggered_at: Option<DateTime<Utc>>,
pub created_at: DateTime<Utc>,
}Expand description
Cron-driven schedule for a TestSuite. The schedule worker (registry-server::workers::test_schedule_runner) scans this table every minute, identifies rows whose next-fire time has passed, and triggers runs the same way the public POST /test-suites/{id}/runs path does (test_runs row + Redis queue push).
Fields§
§id: Uuid§suite_id: Uuid§cron: String§timezone: String§enabled: bool§last_triggered_at: Option<DateTime<Utc>>§created_at: DateTime<Utc>Implementations§
Source§impl TestSchedule
impl TestSchedule
pub async fn create( pool: &Pool<Postgres>, suite_id: Uuid, cron: &str, timezone: &str, ) -> Result<TestSchedule, Error>
pub async fn list_by_suite( pool: &Pool<Postgres>, suite_id: Uuid, ) -> Result<Vec<TestSchedule>, Error>
Sourcepub async fn list_enabled(
pool: &Pool<Postgres>,
) -> Result<Vec<TestSchedule>, Error>
pub async fn list_enabled( pool: &Pool<Postgres>, ) -> Result<Vec<TestSchedule>, Error>
All enabled schedules. The worker filters in-memory rather than in SQL because cron-expression evaluation lives in Rust.
pub async fn set_enabled( pool: &Pool<Postgres>, id: Uuid, enabled: bool, ) -> Result<Option<TestSchedule>, Error>
Sourcepub async fn mark_triggered(
pool: &Pool<Postgres>,
id: Uuid,
fired_at: DateTime<Utc>,
) -> Result<Option<TestSchedule>, Error>
pub async fn mark_triggered( pool: &Pool<Postgres>, id: Uuid, fired_at: DateTime<Utc>, ) -> Result<Option<TestSchedule>, Error>
Worker-callback: schedule fired, advance the cursor. Idempotent on the (id, fired_at) pair via the WHERE clause — re-running with an older timestamp is a no-op so a worker restart won’t double-fire.
pub async fn delete(pool: &Pool<Postgres>, id: Uuid) -> Result<bool, Error>
Trait Implementations§
Source§impl Clone for TestSchedule
impl Clone for TestSchedule
Source§fn clone(&self) -> TestSchedule
fn clone(&self) -> TestSchedule
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TestSchedule
impl Debug for TestSchedule
Source§impl<'de> Deserialize<'de> for TestSchedule
impl<'de> Deserialize<'de> for TestSchedule
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<TestSchedule, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<TestSchedule, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<'a, R> FromRow<'a, R> for TestSchedulewhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
bool: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
impl<'a, R> FromRow<'a, R> for TestSchedulewhere
R: Row,
&'a str: ColumnIndex<R>,
Uuid: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
String: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
bool: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Option<DateTime<Utc>>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
DateTime<Utc>: Decode<'a, <R as Row>::Database> + Type<<R as Row>::Database>,
Source§impl Serialize for TestSchedule
impl Serialize for TestSchedule
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for TestSchedule
impl RefUnwindSafe for TestSchedule
impl Send for TestSchedule
impl Sync for TestSchedule
impl Unpin for TestSchedule
impl UnsafeUnpin for TestSchedule
impl UnwindSafe for TestSchedule
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreCreates a shared type from an unshared type.