diff options
Diffstat (limited to 'src/db/models.rs')
| -rw-r--r-- | src/db/models.rs | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/db/models.rs b/src/db/models.rs index 603887e..33fa34e 100644 --- a/src/db/models.rs +++ b/src/db/models.rs @@ -4,6 +4,7 @@ use anyhow::{ }; use chrono::naive::NaiveDateTime; use diesel::{ + associations::HasTable, prelude::*, Identifiable, Insertable, @@ -21,6 +22,7 @@ use crate::db::schema::*; #[diesel(table_name = memes)] pub struct Meme { pub id: i32, + pub guild: i64, pub title: String, pub content: Option<String>, pub image_id: Option<i32>, @@ -55,6 +57,7 @@ impl Meme { #[diesel(table_name = memes)] pub struct NewMeme { pub title: String, + pub guild: i64, pub content: Option<String>, pub image_id: Option<i32>, pub audio_id: Option<i32>, @@ -250,6 +253,7 @@ pub struct NewAuditRecord { #[diesel(table_name = tombstones)] pub struct Tombstone { pub id: i32, + pub guild: i64, pub deleted: NaiveDateTime, pub deleted_by: i64, pub metadata_id: i32, @@ -260,6 +264,7 @@ pub struct Tombstone { #[diesel(table_name = tombstones)] pub struct NewTombstone { pub deleted_by: i64, + pub guild: i64, pub metadata_id: i32, pub meme_id: i32, } @@ -269,6 +274,7 @@ pub struct NewTombstone { pub struct InvocationRecord { pub id: i32, pub user_id: i64, + pub guild: i64, pub message_id: i64, pub meme_id: i32, pub time: NaiveDateTime, @@ -279,6 +285,7 @@ pub struct InvocationRecord { #[diesel(table_name = invocation_records)] pub struct NewInvocationRecord { pub user_id: i64, + pub guild: i64, pub message_id: i64, pub meme_id: i32, pub random: bool, @@ -288,6 +295,7 @@ impl InvocationRecord { pub async fn create( conn: &mut AsyncPgConnection, user_id: u64, + guild_id: u64, message_id: u64, meme_id: i32, random: bool, @@ -296,6 +304,7 @@ impl InvocationRecord { .values(&NewInvocationRecord { user_id: user_id as i64, message_id: message_id as i64, + guild: guild_id as i64, meme_id, random, }) @@ -304,16 +313,22 @@ impl InvocationRecord { .map_err(Error::from) } - pub async fn last(conn: &mut AsyncPgConnection) -> Result<Self> { + pub async fn last(conn: &mut AsyncPgConnection, guild_id: u64) -> Result<Self> { invocation_records::table + .filter(invocation_records::guild.eq(guild_id as i64)) .order(invocation_records::time.desc()) .first(conn) .await .map_err(Error::from) } - pub async fn last_n(conn: &mut AsyncPgConnection, n: usize) -> Result<Vec<Self>> { + pub async fn last_n( + conn: &mut AsyncPgConnection, + n: usize, + guild_id: u64, + ) -> Result<Vec<Self>> { invocation_records::table + .filter(invocation_records::guild.eq(guild_id as i64)) .order(invocation_records::time.desc()) .limit(n as i64) .load(conn) |
