Projector
async fn project_event(event: &StoredEvent, db: &SqlitePool) {
match &event.data {
AccountEvent::Deposited { amount, .. } => {
sqlx::query!(
"UPDATE account_details
SET balance = balance + $1, last_activity = $2
WHERE account_id = $3",
amount, event.created_at, event.stream_id
).execute(db).await.unwrap();
sqlx::query!(
"INSERT INTO transactions (account_id, type, amount, at)
VALUES ($1, 'deposit', $2, $3)",
event.stream_id, amount, event.created_at
).execute(db).await.unwrap();
}
}
}