1use serde::Deserialize;
2use sqlx::types::chrono::{DateTime, Utc};
3use std::time::Duration;
4
5use sqlx::FromRow;
6
7pub const VT_DEFAULT: i32 = 30;
8pub const READ_LIMIT_DEFAULT: i32 = 1;
9pub const POLL_TIMEOUT_DEFAULT: Duration = Duration::from_secs(5);
10pub const POLL_INTERVAL_DEFAULT: Duration = Duration::from_millis(250);
11
12use chrono::serde::ts_seconds::deserialize as from_ts;
13
14pub const QUEUE_PREFIX: &str = r#"q"#;
15pub const ARCHIVE_PREFIX: &str = r#"a"#;
16pub const PGMQ_SCHEMA: &str = "pgmq";
17
18pub struct PGMQueueMeta {
19 pub queue_name: String,
20 pub is_partitioned: bool,
21 pub created_at: DateTime<Utc>,
22}
23
24#[derive(Clone, Debug, Deserialize, FromRow)]
29pub struct Message<T = serde_json::Value> {
30 pub msg_id: i64,
32 #[serde(deserialize_with = "from_ts")]
33 pub vt: chrono::DateTime<Utc>,
35 pub enqueued_at: chrono::DateTime<Utc>,
37 pub read_ct: i32,
39 pub message: T,
41}