pub struct FunctionDefinition {
pub name: String,
pub trigger: String,
pub runtime: RuntimeType,
pub timeout_ms: Option<u64>,
pub run_as: Option<RunAs>,
pub when: Vec<TriggerPredicate>,
pub re_runnable: bool,
pub retry: Option<RetryConfig>,
}Expand description
Definition of a serverless function for deployment and execution.
Fields§
§name: StringUnique name for this function.
trigger: StringTrigger type and configuration (e.g., “after:mutation:createUser”, “cron:0 * * * *”, “http:GET:/users/:id”).
runtime: RuntimeTypeWhich runtime executes this function.
timeout_ms: Option<u64>Optional timeout in milliseconds (overrides defaults).
- For
before:mutationtriggers: defaults to 500ms - For other triggers: defaults to 5s
run_as: Option<RunAs>The authority ceiling this function’s fraiseql_query bridge writes run
under (#594). Absent ⇒ fail-closed: the bridge runs under an anonymous
identity and RLS/field-authz deny writes. See RunAs and
identity.
when: Vec<TriggerPredicate>Declarative when predicates (#597) — a conjunction the dispatcher evaluates
on the row images before firing an after:mutation/after:capture function.
Empty ⇒ always fire (back-compat). See
TriggerPredicate.
re_runnable: boolFire-and-forget opt-out for durable dispatch.
After-mutation function dispatch is durable by default: a transient
failure is retried with backoff and, once retries are exhausted, the
invocation is dead-lettered so money- and send-path work is never
silently lost. Set re_runnable = true for work that is safe to simply
re-run later (e.g. LLM scoring) — such dispatch stays fire-and-forget with
no retry or dead-letter overhead. See ADR 0015 for the rationale.
retry: Option<RetryConfig>Per-function retry policy for durable dispatch.
None uses the server default (overridable via FRAISEQL_FUNCTIONS_RETRY_*
environment variables). Ignored when re_runnable is
true. Reuses the observer subsystem’s RetryConfig so retry semantics
are identical across both subsystems.
Implementations§
Source§impl FunctionDefinition
impl FunctionDefinition
Sourcepub fn new(name: &str, trigger: &str, runtime: RuntimeType) -> Self
pub fn new(name: &str, trigger: &str, runtime: RuntimeType) -> Self
Create a new function definition.
Sourcepub fn with_run_as(self, run_as: RunAs) -> Self
pub fn with_run_as(self, run_as: RunAs) -> Self
Set the run_as authority ceiling (#594).
Sourcepub const fn re_runnable(self) -> Self
pub const fn re_runnable(self) -> Self
Mark this function as re-runnable (fire-and-forget) dispatch.
See re_runnable and ADR 0015.
Sourcepub const fn with_timeout(self, timeout_ms: u64) -> Self
pub const fn with_timeout(self, timeout_ms: u64) -> Self
Set a custom timeout for this function.
Sourcepub fn effective_timeout(&self) -> Duration
pub fn effective_timeout(&self) -> Duration
Get the effective timeout for this function.
Sourcepub fn is_before_mutation(&self) -> bool
pub fn is_before_mutation(&self) -> bool
Check if this function is a before:mutation trigger.
Sourcepub fn is_after_mutation(&self) -> bool
pub fn is_after_mutation(&self) -> bool
Check if this function is an after:mutation trigger.
Sourcepub fn is_after_storage(&self) -> bool
pub fn is_after_storage(&self) -> bool
Check if this function is an after:storage trigger.
Sourcepub fn is_after_ingest(&self) -> bool
pub fn is_after_ingest(&self) -> bool
Check if this function is an after:ingest trigger.
Trait Implementations§
Source§impl Clone for FunctionDefinition
impl Clone for FunctionDefinition
Source§fn clone(&self) -> FunctionDefinition
fn clone(&self) -> FunctionDefinition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FunctionDefinition
impl Debug for FunctionDefinition
Source§impl<'de> Deserialize<'de> for FunctionDefinition
impl<'de> Deserialize<'de> for FunctionDefinition
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for FunctionDefinition
impl RefUnwindSafe for FunctionDefinition
impl Send for FunctionDefinition
impl Sync for FunctionDefinition
impl Unpin for FunctionDefinition
impl UnsafeUnpin for FunctionDefinition
impl UnwindSafe for FunctionDefinition
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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>
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>
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