diff --git a/src/data.rs b/src/data.rs
index fc52ac3..47e7649 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -110,6 +110,8 @@ pub(crate) struct JobExitStatus {
     pub(crate) duration: time::Duration,
     /// The name of the container this job ran in
     pub(crate) container_name: String,
+    /// Uuid
+    pub(crate) job_uuid: String
 }
 
 // ==========================
diff --git a/src/logging.rs b/src/logging.rs
index 72d5083..529f3d2 100644
--- a/src/logging.rs
+++ b/src/logging.rs
@@ -5,7 +5,7 @@ use std::env;
 use std::fs::{create_dir_all, File, OpenOptions};
 use std::io::Write;
 use std::path::Path;
-use std::time::Instant;
+use std::time::{Instant, SystemTime};
 
 /// Logging for a [`Job`]
 // TODO: log to postgres instead; maybe i already made a comment todo-ing this idk
@@ -75,14 +75,15 @@ impl JobLogger {
 }
 
 pub(crate) mod sql {
+    use chrono::{DateTime, Utc};
     use sqlx::{Connection, PgConnection};
-    use std::{env, time::Instant};
+    use std::{env, time::SystemTime};
 
     /// Returns a new connection to postgres
     ///
     /// *x*: How many times to retry the reconnect
-    pub(crate) async fn start(x: u16) -> Box<PgConnection> {
-        let mut conn = Box::new(db_connect_with_retries(x).await);
+    pub(crate) async fn start(x: u16) -> PgConnection {
+        let mut conn = db_connect_with_retries(x).await;
         create_tables(&mut conn).await;
         return conn;
     }
@@ -138,38 +139,34 @@ pub(crate) mod sql {
 
     // TODO: when adding logging to postgres directly, update this so it 1) adds the job at the start, 2) logs line-by-line, and 3) adds the end time and exit code at the end of the job
     pub(crate) async fn log_job(
-        mut conn: Box<PgConnection>,
-        start_time: Instant,
-        end_time: Instant,
+        conn: &mut PgConnection,
+        start_time: SystemTime,
+        end_time: SystemTime,
         exit_code: Option<i32>,
         job_id: String,
         revision: String,
         uuid: String,
         log_path: String,
     ) {
-        let start_time =
-            chrono::DateTime::from_timestamp_millis(start_time.elapsed().as_millis() as i64)
-                .unwrap()
-                .format("%+")
-                .to_string();
-        let end_time =
-            chrono::DateTime::from_timestamp_millis(end_time.elapsed().as_millis() as i64)
-                .unwrap()
-                .format("%+")
-                .to_string();
+        let start_time: DateTime<Utc> = start_time.into();
+        let start_time = start_time.format("%+").to_string();
+        let end_time: DateTime<Utc> = end_time.into();
+        let end_time = end_time.format("%+").to_string();
         let exit_code = match exit_code {
             Some(code) => code.to_string(),
             None => "NULL".to_string(),
         };
-        sqlx::query(format!("INSERT INTO job_logs (start_time, end_time, exit_code, job_id, revision, uuid, log_path)
-                VALUES ('{start_time}', '{end_time}', {exit_code}, '{job_id}', '{revision}', '{uuid}', '{log_path}'));            
-").as_str()).execute(conn.as_mut()).await.unwrap();
+        let query = format!("INSERT INTO job_logs (start_time, end_time, exit_code, job_id, revision, uuid, log_path) VALUES ('{start_time}', '{end_time}', {exit_code}, '{job_id}', '{revision}', '{uuid}', '{log_path}')");
+        sqlx::query(query.as_str())
+            .execute(conn.as_mut())
+            .await
+            .unwrap();
     }
 
     /// Tries to connect to the database *x* times, panics after reaching that limit
 
     /// Creates table(s) for gregory if they don't exist already
-    pub(crate) async fn create_tables(conn: &mut Box<PgConnection>) {
+    pub(crate) async fn create_tables(conn: &mut PgConnection) {
         sqlx::query(
             "CREATE TABLE IF NOT EXISTS job_logs (
     start_time   timestamp,
@@ -184,7 +181,7 @@ pub(crate) mod sql {
 );
 ",
         )
-        .execute(conn.as_mut())
+        .execute(conn)
         .await
         .unwrap();
     }
diff --git a/src/main.rs b/src/main.rs
index f18d1f1..1919b5c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -17,6 +17,7 @@ use std::process::Command;
 use std::sync::Arc;
 use std::sync::Mutex;
 use std::time::Instant;
+use std::time::SystemTime;
 use uuid::Uuid;
 
 mod cli;
@@ -71,15 +72,34 @@ async fn run(config_path: String) {
     // TODO: Add logic to add repo update repos when relevant (see dependencies) here - or maybe do that logic earlier?
 
     let failed_packages: Vec<String> = Vec::new();
-
+    
+    
+    let mut pg_connection = sql::start(5).await;
+    
     // runs the jobs (will need to be updated after sorting is added)
     for (job_id, job) in state.jobs {
-        let job_exit_status = run_job(&state.conf, job_id, job);
-        println!("{:#?}", job_exit_status);
+        let start_time = SystemTime::now();
+        let job_exit_status = run_job(&state.conf, job_id.clone(), job.clone());
+
+        // TODO: PUSH IT TO THE DB HERE
+        sql::log_job(
+            pg_connection.as_mut(),
+            start_time,
+            start_time + job_exit_status.duration,
+            job_exit_status.exit_code,
+            job_id,
+            job.revision,
+            job_exit_status.job_uuid,
+            job_exit_status.log_path,
+        ).await;
     }
 }
 
-fn run_job(conf: &Config, job_id: String, job: Job) -> JobExitStatus {
+fn run_job(
+    conf: &Config,
+    job_id: String,
+    job: Job,
+) -> JobExitStatus {
     // limit threads to max_threads in the config
     let mut threads = job.threads;
     if job.threads > conf.max_threads {
@@ -165,14 +185,13 @@ fn run_job(conf: &Config, job_id: String, job: Job) -> JobExitStatus {
 
     let log_path = job_logger.lock().unwrap().path();
 
-    // TODO: PUSH IT TO THE DB HERE
-
     return JobExitStatus {
         container_name: script_path,
         duration: cmd_output.clone().duration(),
         job,
         exit_code: cmd_output.status_code(),
         log_path,
+        job_uuid: run_id.to_string(),
     };
 }
 
@@ -289,7 +308,7 @@ struct State {
     /// ```ignore
     /// sqlx::query("DELETE FROM table").execute(&mut state.conn).await?;
     /// ```
-    sql: Box<PgConnection>,
+    sql: PgConnection,
 }
 
 impl State {