diff options
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 24 |
1 files changed, 21 insertions, 3 deletions
@@ -110,7 +110,7 @@ pub fn insert_task(conn: &PgConnection, task: &models::NewTask) -> Result<i64, E Ok(id) } -fn update_task_inner(conn: &PgConnection, task: &models::Task) -> Result<models::Task, Error> { +fn update_task_inner(conn: &PgConnection, task: models::Task) -> Result<models::Task, Error> { use crate::schema::tasks; diesel::delete(tasks::table.filter(tasks::columns::id.eq(task.id))).execute(conn)?; @@ -130,7 +130,7 @@ fn update_task_inner(conn: &PgConnection, task: &models::Task) -> Result<models: Ok(new_task) } -pub fn update_task(conn: &PgConnection, task: &models::Task) -> Result<models::Task, Error> { +pub fn update_task(conn: &PgConnection, task: models::Task) -> Result<models::Task, Error> { conn.transaction(|| update_task_inner(conn, task)) } @@ -150,7 +150,7 @@ pub fn take_task( .first::<models::Task>(conn)?; task.start_at = eta; - let task = update_task_inner(conn, &task)?; + let task = update_task_inner(conn, task)?; Ok(task) }) @@ -163,3 +163,21 @@ pub fn insert_data(conn: &PgConnection, data: &models::RawData) -> Result<usize, .execute(conn)?; Ok(rows) } + +pub fn get_raw_data(conn: &PgConnection, key: &models::RawDataKey) -> Result<models::RawData, Error> { + use crate::schema::raw_data; + let data = raw_data::table + .find((key.data_type, key.id)) + .get_result::<models::RawData>(conn)?; + Ok(data) +} + +pub fn get_raw_data_keys(conn: &PgConnection) -> Result<Vec<models::RawDataKey>, Error> { + use crate::schema::raw_data; + let rows = raw_data::table + .select((raw_data::data_type, + raw_data::id, + raw_data::username)) + .get_results::<models::RawDataKey>(conn)?; + Ok(rows) +} |