Browse Source

Add events table

Mauricio Cassola 2 years ago
parent
commit
e08fc2bb1f
2 changed files with 48 additions and 0 deletions
  1. 11 0
      src/db.rs
  2. 37 0
      src/db/events.rs

+ 11 - 0
src/db.rs

@@ -5,6 +5,7 @@ use std::sync::{Arc, Mutex};
 use tokio::sync::{OwnedSemaphorePermit, Semaphore};
 use tokio_postgres::Client as DbClient;
 
+pub mod events;
 pub mod issue_data;
 pub mod notifications;
 pub mod rustc_commits;
@@ -215,5 +216,15 @@ CREATE TABLE issue_data (
     data JSONB,
     PRIMARY KEY (repo, issue_number, key)
 );
+",
+    "
+CREATE TABLE events (
+    event_id UUID PRIMARY KEY,
+    event_name TEXT NOT NULL,
+    expected_event_time TIMESTAMP WITH TIME ZONE NOT NULL,
+    event_metadata JSONB,
+    executed_at TIMESTAMP WITH TIME ZONE NOT NULL,
+    failed TEXT
+);
 ",
 ];

+ 37 - 0
src/db/events.rs

@@ -0,0 +1,37 @@
+//! The `events` table provides a way to have scheduled events
+
+use anyhow::{Result};
+use chrono::{DateTime, FixedOffset};
+use tokio_postgres::{Client as DbClient};
+use uuid::Uuid;
+
+#[derive(Debug)]
+pub struct Event {
+    pub event_id: Uuid,
+    pub event_name: String,
+    pub expected_event_time: DateTime<FixedOffset>,
+    pub event_metadata: String,
+    pub executed_at: DateTime<FixedOffset>,
+    pub failed: Option<String>,
+}
+
+pub async fn insert_failed(db: &DbClient) -> Result<()> {
+    unimplemented!();
+}
+
+pub async fn delete_event(db: &DbClient) -> Result<()> {
+    unimplemented!();
+}
+
+pub async fn get_events_to_execute(db: &DbClient) -> Result<Vec<Event>> {
+    let events = db
+        .query(
+            "
+        SELECT * FROM events",
+            &[],
+        )
+        .await
+        .unwrap();
+
+    Ok(vec![])
+}