aboutsummaryrefslogtreecommitdiff
path: root/src/db/models.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/models.rs')
-rw-r--r--src/db/models.rs61
1 files changed, 33 insertions, 28 deletions
diff --git a/src/db/models.rs b/src/db/models.rs
index f7bbf8e..1165368 100644
--- a/src/db/models.rs
+++ b/src/db/models.rs
@@ -5,7 +5,10 @@ use diesel::{
Insertable,
Queryable,
};
-use diesel_async::{AsyncPgConnection, RunQueryDsl};
+use diesel_async::{
+ AsyncPgConnection,
+ RunQueryDsl,
+};
use sha1::Digest;
use crate::{
@@ -27,26 +30,24 @@ pub struct Meme {
impl Meme {
pub async fn image(&self, conn: &mut AsyncPgConnection) -> Option<Result<Image>> {
- self.image_id
- .map(|x: i32| images::table.filter(images::id.eq(x))
- .first(conn)
- .await
- .map_err(Error::from))
+ match self.image_id {
+ Some(x) => {
+ Some(images::table.filter(images::id.eq(x)).first(conn).await.map_err(Error::from))
+ },
+ None => None,
+ }
}
pub async fn audio(&self, conn: &mut AsyncPgConnection) -> Option<Result<Audio>> {
- self.audio_id
- .map(|x: i32| audio::table.filter(audio::id.eq(x))
- .first(conn)
- .await
- .map_err(Error::from))
+ let Some(x) = self.audio_id else {
+ return None;
+ };
+
+ Some(audio::table.filter(audio::id.eq(x)).first(conn).await.map_err(Error::from))
}
pub async fn find(conn: &mut AsyncPgConnection, id: i32) -> Result<Meme> {
- memes::table.find(id)
- .get_result(conn)
- .await
- .map_err(Error::from)
+ memes::table.find(id).get_result(conn).await.map_err(Error::from)
}
}
@@ -62,7 +63,7 @@ pub struct NewMeme {
impl NewMeme {
pub async fn save(mut self, conn: &mut AsyncPgConnection, by_user: u64) -> Result<Meme> {
- let metadata = Metadata::create(conn, by_user)?;
+ let metadata = Metadata::create(conn, by_user).await?;
self.metadata_id = metadata.id;
@@ -84,7 +85,7 @@ pub struct Audio {
}
impl Audio {
- pub fn create(conn: &mut AsyncPgConnection, data: Vec<u8>, by_user: u64) -> Result<i32> {
+ pub async fn create(conn: &mut AsyncPgConnection, data: Vec<u8>, by_user: u64) -> Result<i32> {
let mut data_hash = ::sha1::Sha1::new();
data_hash.update(&data);
let data_hash = data_hash.finalize().to_vec();
@@ -95,11 +96,11 @@ impl Audio {
.get_results::<i32>(conn)
.await?;
- if let Some(id) = id.first() {
+ if let Some(id) = <[_]>::first(&id) {
return Ok(*id);
}
- let metadata = Metadata::create(conn, by_user)?;
+ let metadata = Metadata::create(conn, by_user).await?;
let new_audio = NewAudio {
data,
@@ -135,7 +136,7 @@ pub struct Image {
}
impl Image {
- pub fn create(
+ pub async fn create(
conn: &mut AsyncPgConnection,
filename: &str,
data: Vec<u8>,
@@ -151,11 +152,11 @@ impl Image {
.get_results::<i32>(conn)
.await?;
- if let Some(id) = id.first() {
+ if let Some(id) = <[_]>::first(&id) {
return Ok(*id);
}
- let metadata = Metadata::create(conn, by_user)?;
+ let metadata = Metadata::create(conn, by_user).await?;
let new_image = NewImage {
data,
@@ -191,7 +192,7 @@ pub struct Metadata {
}
impl Metadata {
- pub fn create(conn: &mut AsyncPgConnection, by_user: u64) -> Result<Metadata> {
+ pub async fn create(conn: &mut AsyncPgConnection, by_user: u64) -> Result<Metadata> {
diesel::insert_into(metadata::table)
.values(&NewMetadata {
created_by: by_user as i64,
@@ -201,7 +202,7 @@ impl Metadata {
.map_err(Error::from)
}
- pub fn find(conn: &mut AsyncPgConnection, id: i32) -> Result<Metadata> {
+ pub async fn find(conn: &mut AsyncPgConnection, id: i32) -> Result<Metadata> {
metadata::table.find(id).get_result::<Metadata>(conn).await.map_err(Error::from)
}
}
@@ -222,7 +223,11 @@ pub struct AuditRecord {
}
impl AuditRecord {
- pub fn create(conn: &mut AsyncPgConnection, metadata: i32, by_user: u64) -> Result<AuditRecord> {
+ pub async fn create(
+ conn: &mut AsyncPgConnection,
+ metadata: i32,
+ by_user: u64,
+ ) -> Result<AuditRecord> {
diesel::insert_into(audit_records::table)
.values(&NewAuditRecord {
updated_by: by_user as i64,
@@ -280,7 +285,7 @@ pub struct NewInvocationRecord {
}
impl InvocationRecord {
- pub fn create(
+ pub async fn create(
conn: &mut AsyncPgConnection,
user_id: u64,
message_id: u64,
@@ -299,7 +304,7 @@ impl InvocationRecord {
.map_err(Error::from)
}
- pub fn last(conn: &mut AsyncPgConnection) -> Result<Self> {
+ pub async fn last(conn: &mut AsyncPgConnection) -> Result<Self> {
invocation_records::table
.order(invocation_records::time.desc())
.first(conn)
@@ -307,7 +312,7 @@ impl InvocationRecord {
.map_err(Error::from)
}
- pub fn last_n(conn: &mut AsyncPgConnection, n: usize) -> Result<Vec<Self>> {
+ pub async fn last_n(conn: &mut AsyncPgConnection, n: usize) -> Result<Vec<Self>> {
invocation_records::table
.order(invocation_records::time.desc())
.limit(n as i64)