wire types: WireTime newtype for timestamps instead of adaptor-annotated i64

This commit is contained in:
damocles 2026-07-03 19:18:33 +02:00 committed by mara
commit 1e205289c5
12 changed files with 148 additions and 162 deletions

View file

@ -7,6 +7,7 @@ use std::sync::Mutex;
use std::time::{SystemTime, UNIX_EPOCH};
use anyhow::{Context, Result};
use hive_sh4re::wire_time::WireTime;
use hive_sh4re::{InboxRow, Message};
use rusqlite::{Connection, OptionalExtension, params};
use serde::Serialize;
@ -74,10 +75,8 @@ pub struct PendingReminder {
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub file_path: Option<String>,
#[serde(with = "hive_sh4re::wire_time::iso")]
pub due_at: i64,
#[serde(with = "hive_sh4re::wire_time::iso")]
pub created_at: i64,
pub due_at: WireTime,
pub created_at: WireTime,
/// Most recent delivery failure for this row, if any. Cleared
/// to NULL on operator retry. Surfaced inline in the dashboard
/// so a stuck reminder doesn't just silently retry forever.
@ -926,8 +925,8 @@ impl Broker {
agent: row.get(1)?,
message: row.get(2)?,
file_path: row.get(3)?,
due_at: row.get(4)?,
created_at: row.get(5)?,
due_at: hive_sh4re::wire_time::WireTime(row.get(4)?),
created_at: hive_sh4re::wire_time::WireTime(row.get(5)?),
last_error: row.get(6)?,
attempt_count: u32::try_from(attempts).unwrap_or(0),
})