feat: add postgres support

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2023-10-05 22:41:14 +02:00
parent 4a88d2fecd
commit 4d150febc7
3 changed files with 164 additions and 16 deletions

View File

@@ -141,6 +141,23 @@ FOR UPDATE;
}
}
async fn update_published(&self, event_id: &str) -> Result<(), PersistenceError> {
todo!()
sqlx::query(
r#"
UPDATE outbox
SET state = 'handled'
WHERE id = $1;
"#,
)
.bind(
Uuid::parse_str(event_id)
.map_err(|e| anyhow::anyhow!(e))
.map_err(PersistenceError::UpdatePublished)?,
)
.execute(&self.pool)
.await
.map_err(|e| anyhow::anyhow!(e))
.map_err(PersistenceError::UpdatePublished)?;
Ok(())
}
}

View File

@@ -8,9 +8,9 @@ async fn test_persistence_insert() -> anyhow::Result<()> {
persistence
.insert(
&EventInfo {
domain: "some-domain",
entity_type: "some-entity-type",
event_name: "some-event-name",
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
@@ -19,9 +19,9 @@ async fn test_persistence_insert() -> anyhow::Result<()> {
persistence
.insert(
&EventInfo {
domain: "some-domain",
entity_type: "some-entity-type",
event_name: "some-event-name",
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
@@ -37,9 +37,9 @@ async fn test_persistence_next() -> anyhow::Result<()> {
persistence
.insert(
&EventInfo {
domain: "some-domain",
entity_type: "some-entity-type",
event_name: "some-event-name",
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
@@ -48,9 +48,9 @@ async fn test_persistence_next() -> anyhow::Result<()> {
persistence
.insert(
&EventInfo {
domain: "some-domain",
entity_type: "some-entity-type",
event_name: "some-event-name",
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
@@ -61,3 +61,47 @@ async fn test_persistence_next() -> anyhow::Result<()> {
Ok(())
}
#[tokio::test]
async fn test_persistence_get() -> anyhow::Result<()> {
let persistence = PostgresPersistence::new_from_env().await?;
persistence
.insert(
&EventInfo {
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
.await?;
let (event_id, _) = persistence.next().await?.unwrap();
let (_, _) = persistence.get(&event_id).await?.unwrap();
Ok(())
}
#[tokio::test]
async fn test_persistence_update() -> anyhow::Result<()> {
let persistence = PostgresPersistence::new_from_env().await?;
persistence
.insert(
&EventInfo {
domain: "some-domain".into(),
entity_type: "some-entity-type".into(),
event_name: "some-event-name".into(),
},
b"some-strange-and-cruncy-content".to_vec(),
)
.await?;
let (event_id, _) = persistence.next().await?.unwrap();
let (_, _) = persistence.get(&event_id).await?.unwrap();
persistence.update_published(&event_id).await?;
Ok(())
}