summaryrefslogtreecommitdiff
path: root/src/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.rs')
-rw-r--r--src/db.rs59
1 files changed, 55 insertions, 4 deletions
diff --git a/src/db.rs b/src/db.rs
index 24cf98d..5865231 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -6,11 +6,50 @@ use chrono::Utc;
use diesel::connection::Connection;
use diesel::pg::PgConnection;
use diesel::ExpressionMethods;
+use diesel::Insertable;
use diesel::QueryDsl;
use diesel::RunQueryDsl;
pub const COST: u32 = 10;
+#[macro_export]
+macro_rules! insert {
+ ($conn:expr, $table:expr, $values:expr, $returning:expr, $t:ty) => {{
+ use crate::diesel::RunQueryDsl;
+ let conn: &PgConnection = &$conn;
+ let r: Result<$t, Error> = diesel::insert_into($table)
+ .values($values)
+ .returning($returning)
+ .get_result(conn)
+ .map_err(From::from);
+ r
+ }};
+
+ ($conn:expr, $table:expr, $values:expr) => {{
+ use crate::diesel::RunQueryDsl;
+ let conn: &PgConnection = &$conn;
+ let r: Result<usize, Error> = diesel::insert_into($table)
+ .values($values)
+ .execute(conn)
+ .map_err(From::from);
+ r
+ }};
+
+ (entries <= $conn:expr, $values:expr) => {
+ insert!(
+ $conn,
+ schema::entries::table,
+ $values,
+ schema::entries::id,
+ i64
+ )
+ };
+
+ (entry_data <= $conn:expr, $values:expr) => {
+ insert!($conn, schema::entry_data::table, $values)
+ };
+}
+
pub fn create_config(conn: &PgConnection, config: &models::Config) -> Result<(), Error> {
use crate::schema::config;
@@ -164,7 +203,21 @@ pub fn insert_data(conn: &PgConnection, data: &models::RawData) -> Result<usize,
Ok(rows)
}
-pub fn get_raw_data(conn: &PgConnection, key: &models::RawDataKey) -> Result<models::RawData, Error> {
+pub fn insert_entry_data(
+ conn: &PgConnection,
+ entry_data: &models::EntryData,
+) -> Result<usize, Error> {
+ use crate::schema::entry_data;
+ let rows = diesel::insert_into(entry_data::table)
+ .values(entry_data)
+ .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))
@@ -175,9 +228,7 @@ pub fn get_raw_data(conn: &PgConnection, key: &models::RawDataKey) -> Result<mod
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))
+ .select((raw_data::data_type, raw_data::id, raw_data::username))
.get_results::<models::RawDataKey>(conn)?;
Ok(rows)
}