use serde::Deserialize;
use sqlx::types::chrono::{DateTime, Utc};
use std::time::Duration;
use sqlx::FromRow;
pub const VT_DEFAULT: i32 = 30;
pub const READ_LIMIT_DEFAULT: i32 = 1;
pub const POLL_TIMEOUT_DEFAULT: Duration = Duration::from_secs(5);
pub const POLL_INTERVAL_DEFAULT: Duration = Duration::from_millis(250);
use chrono::serde::ts_seconds::deserialize as from_ts;
pub const QUEUE_PREFIX: &str = r#"q"#;
pub const ARCHIVE_PREFIX: &str = r#"a"#;
pub const PGMQ_SCHEMA: &str = "pgmq";
pub struct PGMQueueMeta {
pub queue_name: String,
pub is_partitioned: bool,
pub created_at: DateTime<Utc>,
}
#[derive(Clone, Debug, Deserialize, FromRow)]
pub struct Message<T = serde_json::Value> {
pub msg_id: i64,
#[serde(deserialize_with = "from_ts")]
pub vt: chrono::DateTime<Utc>,
pub enqueued_at: chrono::DateTime<Utc>,
pub read_ct: i32,
pub message: T,
}