Skip to main content

awa_model/
lib.rs

1pub mod adapter;
2pub mod admin;
3pub mod batch_operations;
4pub mod bridge;
5pub mod callback_contract;
6pub mod cron;
7pub mod dlq;
8pub mod error;
9pub mod insert;
10pub mod job;
11pub mod kind;
12pub mod migrations;
13pub mod partitioned_queue;
14pub mod queue_storage;
15pub mod reschedule;
16pub mod storage;
17pub mod unique;
18
19// Re-exports for ergonomics
20pub use adapter::postgres::{prepare_job_insert, prepare_raw_job_insert, PreparedJobInsert};
21pub use admin::{
22    CallbackConfig, DefaultAction, JobKindDescriptor, JobKindOverview, ListJobsFilter,
23    QueueDescriptor, QueueOverview, QueueRuntimeConfigSnapshot, QueueRuntimeMode,
24    QueueRuntimeSnapshot, QueueRuntimeSummary, RateLimitSnapshot, ResolveOutcome,
25    RetryFailedOutcome, RuntimeInstance, RuntimeOverview, RuntimeSnapshotInput,
26    StateTimeseriesBucket, StorageCapability,
27};
28pub use batch_operations::{
29    BatchOperation, BatchOperationFilter, BatchOperationKind, BatchOperationPreview,
30    BatchOperationSpec, BatchOperationState, ListBatchOperationsFilter, SubmitBatchOperation,
31};
32
33/// Deprecated alias preserved for one release so existing downstream code
34/// compiling against `awa_model::QueueStats` keeps building. New callers
35/// should use [`QueueOverview`] directly — the renamed type carries
36/// additional descriptor fields this alias predates.
37#[deprecated(since = "0.5.4", note = "use `QueueOverview` instead")]
38pub type QueueStats = QueueOverview;
39pub use cron::{CronJobRow, CronMissedFirePolicy, PeriodicJob, PeriodicJobBuilder};
40pub use dlq::{DlqMetadata, DlqRow, ListDlqFilter, RetryFromDlqOpts};
41pub use error::{map_sqlx_error, AwaError};
42pub use insert::{insert, insert_many, insert_many_copy, insert_many_copy_from_pool, insert_with};
43pub use job::{InsertOpts, InsertParams, JobRow, JobState, UniqueOpts};
44pub use partitioned_queue::{
45    partition_for_ordering_key, partition_hash64, PartitionedQueue, PartitionedQueueError,
46};
47pub use queue_storage::{
48    ClaimedEntry, ClaimedRuntimeJob, PruneOutcome, QueueCounts, QueueStorage, QueueStorageConfig,
49    RotateOutcome, SkipReason, TerminalDeltaRollupOutcome,
50};
51pub use storage::StorageStatus;
52
53// Re-export the derive macro
54pub use awa_macros::JobArgs;
55
56/// Trait for typed job arguments.
57///
58/// Implement this trait (or use `#[derive(JobArgs)]`) to define a job type.
59/// The `kind()` method returns the snake_case kind string that identifies
60/// this job type across languages.
61pub trait JobArgs: serde::Serialize {
62    /// The kind string for this job type (e.g., "send_email").
63    fn kind() -> &'static str
64    where
65        Self: Sized;
66
67    /// Get the kind string for an instance.
68    fn kind_str(&self) -> &'static str
69    where
70        Self: Sized,
71    {
72        Self::kind()
73    }
74
75    /// Serialize to JSON value.
76    fn to_args(&self) -> Result<serde_json::Value, serde_json::Error> {
77        serde_json::to_value(self)
78    }
79}