From ef056edf92b678265a4666e1f9405e3b0ce66a42 Mon Sep 17 00:00:00 2001 From: Nathan Perry Date: Fri, 16 Aug 2024 21:14:30 -0400 Subject: repo: overhaul for multitenancy --- src/db/models.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/db/models.rs') 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, pub image_id: Option, @@ -55,6 +57,7 @@ impl Meme { #[diesel(table_name = memes)] pub struct NewMeme { pub title: String, + pub guild: i64, pub content: Option, pub image_id: Option, pub audio_id: Option, @@ -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 { + pub async fn last(conn: &mut AsyncPgConnection, guild_id: u64) -> Result { 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> { + pub async fn last_n( + conn: &mut AsyncPgConnection, + n: usize, + guild_id: u64, + ) -> Result> { invocation_records::table + .filter(invocation_records::guild.eq(guild_id as i64)) .order(invocation_records::time.desc()) .limit(n as i64) .load(conn) -- cgit v1.3.1