Restructure guilds table
This commit is contained in:
		@@ -7,6 +7,8 @@ DROP TABLE IF EXISTS command_aliases;
 | 
				
			|||||||
DROP TABLE IF EXISTS macro;
 | 
					DROP TABLE IF EXISTS macro;
 | 
				
			||||||
DROP TABLE IF EXISTS roles;
 | 
					DROP TABLE IF EXISTS roles;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET FOREIGN_KEY_CHECKS=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Drop columns from channels that are no longer used
 | 
					-- Drop columns from channels that are no longer used
 | 
				
			||||||
ALTER TABLE channels DROP COLUMN `name`;
 | 
					ALTER TABLE channels DROP COLUMN `name`;
 | 
				
			||||||
ALTER TABLE channels DROP COLUMN `blacklisted`;
 | 
					ALTER TABLE channels DROP COLUMN `blacklisted`;
 | 
				
			||||||
@@ -77,3 +79,5 @@ ALTER TABLE command_macro
 | 
				
			|||||||
UPDATE command_macro SET guild_id = (SELECT guild FROM guilds_old WHERE id = guild_id);
 | 
					UPDATE command_macro SET guild_id = (SELECT guild FROM guilds_old WHERE id = guild_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DROP TABLE guilds_old;
 | 
					DROP TABLE guilds_old;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET FOREIGN_KEY_CHECKS=1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ impl Recordable for Options {
 | 
				
			|||||||
            "
 | 
					            "
 | 
				
			||||||
            INSERT INTO todos (guild_id, channel_id, value)
 | 
					            INSERT INTO todos (guild_id, channel_id, value)
 | 
				
			||||||
            VALUES (
 | 
					            VALUES (
 | 
				
			||||||
                (SELECT id FROM guilds WHERE guild = ?),
 | 
					                ?,
 | 
				
			||||||
                (SELECT id FROM channels WHERE channel = ?),
 | 
					                (SELECT id FROM channels WHERE channel = ?),
 | 
				
			||||||
                ?
 | 
					                ?
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ pub async fn listener(
 | 
				
			|||||||
            if is_new.unwrap_or(false) {
 | 
					            if is_new.unwrap_or(false) {
 | 
				
			||||||
                let guild_id = guild.id.get().to_owned();
 | 
					                let guild_id = guild.id.get().to_owned();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                sqlx::query!("INSERT IGNORE INTO guilds (guild) VALUES (?)", guild_id)
 | 
					                sqlx::query!("INSERT IGNORE INTO guilds (id) VALUES (?)", guild_id)
 | 
				
			||||||
                    .execute(&data.database)
 | 
					                    .execute(&data.database)
 | 
				
			||||||
                    .await?;
 | 
					                    .await?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -56,7 +56,7 @@ To stay up to date on the latest features and fixes, join our [Discord](https://
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        FullEvent::GuildDelete { incomplete, .. } => {
 | 
					        FullEvent::GuildDelete { incomplete, .. } => {
 | 
				
			||||||
            if !incomplete.unavailable {
 | 
					            if !incomplete.unavailable {
 | 
				
			||||||
                let _ = sqlx::query!("DELETE FROM guilds WHERE guild = ?", incomplete.id.get())
 | 
					                let _ = sqlx::query!("DELETE FROM guilds WHERE id = ?", incomplete.id.get())
 | 
				
			||||||
                    .execute(&data.database)
 | 
					                    .execute(&data.database)
 | 
				
			||||||
                    .await;
 | 
					                    .await;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,9 +8,7 @@ use crate::{consts::DEFAULT_AVATAR, Error};
 | 
				
			|||||||
pub struct ChannelData {
 | 
					pub struct ChannelData {
 | 
				
			||||||
    pub id: u32,
 | 
					    pub id: u32,
 | 
				
			||||||
    pub channel: u64,
 | 
					    pub channel: u64,
 | 
				
			||||||
    pub name: Option<String>,
 | 
					 | 
				
			||||||
    pub nudge: i16,
 | 
					    pub nudge: i16,
 | 
				
			||||||
    pub blacklisted: bool,
 | 
					 | 
				
			||||||
    pub webhook_id: Option<u64>,
 | 
					    pub webhook_id: Option<u64>,
 | 
				
			||||||
    pub webhook_token: Option<String>,
 | 
					    pub webhook_token: Option<String>,
 | 
				
			||||||
    pub paused: bool,
 | 
					    pub paused: bool,
 | 
				
			||||||
@@ -27,7 +25,7 @@ impl ChannelData {
 | 
				
			|||||||
        if let Ok(c) = sqlx::query_as_unchecked!(
 | 
					        if let Ok(c) = sqlx::query_as_unchecked!(
 | 
				
			||||||
            Self,
 | 
					            Self,
 | 
				
			||||||
            "
 | 
					            "
 | 
				
			||||||
            SELECT id, channel, name, nudge, blacklisted, webhook_id, webhook_token, paused,
 | 
					            SELECT id, channel, nudge, webhook_id, webhook_token, paused,
 | 
				
			||||||
                paused_until
 | 
					                paused_until
 | 
				
			||||||
            FROM channels
 | 
					            FROM channels
 | 
				
			||||||
            WHERE channel = ?
 | 
					            WHERE channel = ?
 | 
				
			||||||
@@ -39,15 +37,11 @@ impl ChannelData {
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            Ok(c)
 | 
					            Ok(c)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            let props = channel.to_owned().guild().map(|g| (g.guild_id.get().to_owned(), g.name));
 | 
					            let guild_id = channel.to_owned().guild().map(|g| g.guild_id.get().to_owned());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            let (guild_id, channel_name) =
 | 
					 | 
				
			||||||
                if let Some((a, b)) = props { (Some(a), Some(b)) } else { (None, None) };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            sqlx::query!(
 | 
					            sqlx::query!(
 | 
				
			||||||
                "INSERT IGNORE INTO channels (channel, name, guild_id) VALUES (?, ?, (SELECT id FROM guilds WHERE guild = ?))",
 | 
					                "INSERT IGNORE INTO channels (channel, guild_id) VALUES (?, ?)",
 | 
				
			||||||
                channel_id,
 | 
					                channel_id,
 | 
				
			||||||
                channel_name,
 | 
					 | 
				
			||||||
                guild_id
 | 
					                guild_id
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .execute(&pool.clone())
 | 
					            .execute(&pool.clone())
 | 
				
			||||||
@@ -56,7 +50,7 @@ impl ChannelData {
 | 
				
			|||||||
            Ok(sqlx::query_as_unchecked!(
 | 
					            Ok(sqlx::query_as_unchecked!(
 | 
				
			||||||
                Self,
 | 
					                Self,
 | 
				
			||||||
                "
 | 
					                "
 | 
				
			||||||
                SELECT id, channel, name, nudge, blacklisted, webhook_id, webhook_token, paused, paused_until
 | 
					                SELECT id, channel, nudge, webhook_id, webhook_token, paused, paused_until
 | 
				
			||||||
                FROM channels
 | 
					                FROM channels
 | 
				
			||||||
                WHERE channel = ?
 | 
					                WHERE channel = ?
 | 
				
			||||||
                ",
 | 
					                ",
 | 
				
			||||||
@@ -72,18 +66,14 @@ impl ChannelData {
 | 
				
			|||||||
            "
 | 
					            "
 | 
				
			||||||
            UPDATE channels
 | 
					            UPDATE channels
 | 
				
			||||||
            SET
 | 
					            SET
 | 
				
			||||||
                name = ?,
 | 
					 | 
				
			||||||
                nudge = ?,
 | 
					                nudge = ?,
 | 
				
			||||||
                blacklisted = ?,
 | 
					 | 
				
			||||||
                webhook_id = ?,
 | 
					                webhook_id = ?,
 | 
				
			||||||
                webhook_token = ?,
 | 
					                webhook_token = ?,
 | 
				
			||||||
                paused = ?,
 | 
					                paused = ?,
 | 
				
			||||||
                paused_until = ?
 | 
					                paused_until = ?
 | 
				
			||||||
            WHERE id = ?
 | 
					            WHERE id = ?
 | 
				
			||||||
            ",
 | 
					            ",
 | 
				
			||||||
            self.name,
 | 
					 | 
				
			||||||
            self.nudge,
 | 
					            self.nudge,
 | 
				
			||||||
            self.blacklisted,
 | 
					 | 
				
			||||||
            self.webhook_id,
 | 
					            self.webhook_id,
 | 
				
			||||||
            self.webhook_token,
 | 
					            self.webhook_token,
 | 
				
			||||||
            self.paused,
 | 
					            self.paused,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ use sqlx::MySqlPool;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
pub struct GuildData {
 | 
					pub struct GuildData {
 | 
				
			||||||
    pub ephemeral_confirmations: bool,
 | 
					    pub ephemeral_confirmations: bool,
 | 
				
			||||||
    pub id: u32,
 | 
					    pub guild_id: u64,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl GuildData {
 | 
					impl GuildData {
 | 
				
			||||||
@@ -13,7 +13,7 @@ impl GuildData {
 | 
				
			|||||||
    ) -> Result<Self, Box<dyn std::error::Error + Sync + Send>> {
 | 
					    ) -> Result<Self, Box<dyn std::error::Error + Sync + Send>> {
 | 
				
			||||||
        if let Ok(c) = sqlx::query_as_unchecked!(
 | 
					        if let Ok(c) = sqlx::query_as_unchecked!(
 | 
				
			||||||
            Self,
 | 
					            Self,
 | 
				
			||||||
            "SELECT id, ephemeral_confirmations FROM guilds WHERE guild = ?",
 | 
					            "SELECT ephemeral_confirmations, id as guild_id FROM guilds WHERE id = ?",
 | 
				
			||||||
            guild_id.get()
 | 
					            guild_id.get()
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .fetch_one(pool)
 | 
					        .fetch_one(pool)
 | 
				
			||||||
@@ -21,13 +21,13 @@ impl GuildData {
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            Ok(c)
 | 
					            Ok(c)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            sqlx::query!("INSERT IGNORE INTO guilds (guild) VALUES (?)", guild_id.get())
 | 
					            sqlx::query!("INSERT IGNORE INTO guilds (id) VALUES (?)", guild_id.get())
 | 
				
			||||||
                .execute(&pool.clone())
 | 
					                .execute(&pool.clone())
 | 
				
			||||||
                .await?;
 | 
					                .await?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Ok(sqlx::query_as_unchecked!(
 | 
					            Ok(sqlx::query_as_unchecked!(
 | 
				
			||||||
                Self,
 | 
					                Self,
 | 
				
			||||||
                "SELECT id, ephemeral_confirmations FROM guilds WHERE guild = ?",
 | 
					                "SELECT ephemeral_confirmations, id as guild_id FROM guilds WHERE id = ?",
 | 
				
			||||||
                guild_id.get()
 | 
					                guild_id.get()
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            .fetch_one(pool)
 | 
					            .fetch_one(pool)
 | 
				
			||||||
@@ -39,7 +39,7 @@ impl GuildData {
 | 
				
			|||||||
        sqlx::query!(
 | 
					        sqlx::query!(
 | 
				
			||||||
            "UPDATE guilds SET ephemeral_confirmations = ? WHERE id = ?",
 | 
					            "UPDATE guilds SET ephemeral_confirmations = ? WHERE id = ?",
 | 
				
			||||||
            self.ephemeral_confirmations,
 | 
					            self.ephemeral_confirmations,
 | 
				
			||||||
            self.id
 | 
					            self.guild_id
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .execute(pool)
 | 
					        .execute(pool)
 | 
				
			||||||
        .await
 | 
					        .await
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,16 +68,19 @@ impl Data {
 | 
				
			|||||||
        guild_id: GuildId,
 | 
					        guild_id: GuildId,
 | 
				
			||||||
    ) -> Result<Vec<CommandMacro>, Error> {
 | 
					    ) -> Result<Vec<CommandMacro>, Error> {
 | 
				
			||||||
        let rows = sqlx::query!(
 | 
					        let rows = sqlx::query!(
 | 
				
			||||||
            "SELECT name, description, commands FROM command_macro WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
 | 
					            "SELECT name, description, commands FROM command_macro WHERE guild_id = ?",
 | 
				
			||||||
            guild_id.get()
 | 
					            guild_id.get()
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        .fetch_all(&self.database)
 | 
					        .fetch_all(&self.database)
 | 
				
			||||||
        .await?.iter().map(|row| CommandMacro {
 | 
					        .await?
 | 
				
			||||||
 | 
					        .iter()
 | 
				
			||||||
 | 
					        .map(|row| CommandMacro {
 | 
				
			||||||
            guild_id,
 | 
					            guild_id,
 | 
				
			||||||
            name: row.name.clone(),
 | 
					            name: row.name.clone(),
 | 
				
			||||||
            description: row.description.clone(),
 | 
					            description: row.description.clone(),
 | 
				
			||||||
            commands: serde_json::from_str(&row.commands.to_string()).unwrap(),
 | 
					            commands: serde_json::from_str(&row.commands.to_string()).unwrap(),
 | 
				
			||||||
        }).collect();
 | 
					        })
 | 
				
			||||||
 | 
					        .collect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Ok(rows)
 | 
					        Ok(rows)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -262,7 +262,7 @@ impl Reminder {
 | 
				
			|||||||
                            channels.id = reminders.channel_id
 | 
					                            channels.id = reminders.channel_id
 | 
				
			||||||
                        WHERE
 | 
					                        WHERE
 | 
				
			||||||
                            `status` = 'pending' AND
 | 
					                            `status` = 'pending' AND
 | 
				
			||||||
                            channels.guild_id = (SELECT id FROM guilds WHERE guild = ?)
 | 
					                            channels.guild_id = ?
 | 
				
			||||||
                        ",
 | 
					                        ",
 | 
				
			||||||
                        guild_id.get()
 | 
					                        guild_id.get()
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@ pub async fn get_reminder_templates(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    match sqlx::query_as_unchecked!(
 | 
					    match sqlx::query_as_unchecked!(
 | 
				
			||||||
        ReminderTemplate,
 | 
					        ReminderTemplate,
 | 
				
			||||||
        "SELECT * FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
 | 
					        "SELECT * FROM reminder_template WHERE guild_id = ?",
 | 
				
			||||||
        id
 | 
					        id
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    .fetch_all(pool.inner())
 | 
					    .fetch_all(pool.inner())
 | 
				
			||||||
@@ -87,7 +87,7 @@ pub async fn delete_reminder_template(
 | 
				
			|||||||
    check_authorization(cookies, ctx.inner(), id).await?;
 | 
					    check_authorization(cookies, ctx.inner(), id).await?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    match sqlx::query!(
 | 
					    match sqlx::query!(
 | 
				
			||||||
        "DELETE FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?) AND id = ?",
 | 
					        "DELETE FROM reminder_template WHERE guild_id = ? AND id = ?",
 | 
				
			||||||
        id, delete_reminder_template.id
 | 
					        id, delete_reminder_template.id
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    .fetch_all(pool.inner())
 | 
					    .fetch_all(pool.inner())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -66,7 +66,7 @@ pub async fn create_todo(
 | 
				
			|||||||
                "
 | 
					                "
 | 
				
			||||||
                INSERT INTO todos (guild_id, channel_id, value)
 | 
					                INSERT INTO todos (guild_id, channel_id, value)
 | 
				
			||||||
                VALUES (
 | 
					                VALUES (
 | 
				
			||||||
                    (SELECT id FROM guilds WHERE guild = ?),
 | 
					                    ?,
 | 
				
			||||||
                    (SELECT id FROM channels WHERE channel = ?),
 | 
					                    (SELECT id FROM channels WHERE channel = ?),
 | 
				
			||||||
                    ?
 | 
					                    ?
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
@@ -88,7 +88,7 @@ pub async fn create_todo(
 | 
				
			|||||||
                "
 | 
					                "
 | 
				
			||||||
                INSERT INTO todos (guild_id, channel_id, value)
 | 
					                INSERT INTO todos (guild_id, channel_id, value)
 | 
				
			||||||
                VALUES (
 | 
					                VALUES (
 | 
				
			||||||
                    (SELECT id FROM guilds WHERE guild = ?),
 | 
					                    ?,
 | 
				
			||||||
                    NULL,
 | 
					                    NULL,
 | 
				
			||||||
                    ?
 | 
					                    ?
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
@@ -130,11 +130,9 @@ pub async fn get_todo(
 | 
				
			|||||||
            channels.channel AS channel_id,
 | 
					            channels.channel AS channel_id,
 | 
				
			||||||
            value
 | 
					            value
 | 
				
			||||||
        FROM todos
 | 
					        FROM todos
 | 
				
			||||||
        INNER JOIN guilds
 | 
					 | 
				
			||||||
        ON guilds.id = todos.guild_id
 | 
					 | 
				
			||||||
        LEFT JOIN channels
 | 
					        LEFT JOIN channels
 | 
				
			||||||
        ON channels.id = todos.channel_id
 | 
					        ON channels.id = todos.channel_id
 | 
				
			||||||
        WHERE guilds.guild = ?
 | 
					        WHERE todos.guild_id = ?
 | 
				
			||||||
        ",
 | 
					        ",
 | 
				
			||||||
        id
 | 
					        id
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
@@ -167,7 +165,7 @@ pub async fn update_todo(
 | 
				
			|||||||
        "
 | 
					        "
 | 
				
			||||||
        UPDATE todos
 | 
					        UPDATE todos
 | 
				
			||||||
        SET value = ?
 | 
					        SET value = ?
 | 
				
			||||||
        WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)
 | 
					        WHERE guild_id = ?
 | 
				
			||||||
            AND id = ?
 | 
					            AND id = ?
 | 
				
			||||||
        ",
 | 
					        ",
 | 
				
			||||||
        todo.value,
 | 
					        todo.value,
 | 
				
			||||||
@@ -202,7 +200,7 @@ pub async fn delete_todo(
 | 
				
			|||||||
    sqlx::query!(
 | 
					    sqlx::query!(
 | 
				
			||||||
        "
 | 
					        "
 | 
				
			||||||
        DELETE FROM todos
 | 
					        DELETE FROM todos
 | 
				
			||||||
        WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)
 | 
					        WHERE guild_id = ?
 | 
				
			||||||
            AND id = ?
 | 
					            AND id = ?
 | 
				
			||||||
        ",
 | 
					        ",
 | 
				
			||||||
        guild_id,
 | 
					        guild_id,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,8 @@ pub async fn export(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    match sqlx::query_as_unchecked!(
 | 
					    match sqlx::query_as_unchecked!(
 | 
				
			||||||
        ReminderTemplateCsv,
 | 
					        ReminderTemplateCsv,
 | 
				
			||||||
        "SELECT
 | 
					        "
 | 
				
			||||||
 | 
					        SELECT
 | 
				
			||||||
            name,
 | 
					            name,
 | 
				
			||||||
            attachment,
 | 
					            attachment,
 | 
				
			||||||
            attachment_name,
 | 
					            attachment_name,
 | 
				
			||||||
@@ -60,7 +61,9 @@ pub async fn export(
 | 
				
			|||||||
            interval_months,
 | 
					            interval_months,
 | 
				
			||||||
            tts,
 | 
					            tts,
 | 
				
			||||||
            username
 | 
					            username
 | 
				
			||||||
        FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
 | 
					        FROM reminder_template
 | 
				
			||||||
 | 
					        WHERE guild_id = ?
 | 
				
			||||||
 | 
					        ",
 | 
				
			||||||
        id
 | 
					        id
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    .fetch_all(pool.inner())
 | 
					    .fetch_all(pool.inner())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,10 +38,11 @@ pub async fn export(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    match sqlx::query_as_unchecked!(
 | 
					    match sqlx::query_as_unchecked!(
 | 
				
			||||||
        TodoCsv,
 | 
					        TodoCsv,
 | 
				
			||||||
        "SELECT value, CONCAT('#', channels.channel) AS channel_id FROM todos
 | 
					        "
 | 
				
			||||||
 | 
					        SELECT value, CONCAT('#', channels.channel) AS channel_id FROM todos
 | 
				
			||||||
        LEFT JOIN channels ON todos.channel_id = channels.id
 | 
					        LEFT JOIN channels ON todos.channel_id = channels.id
 | 
				
			||||||
        INNER JOIN guilds ON todos.guild_id = guilds.id
 | 
					        INNER JOIN guilds ON todos.guild_id = ?
 | 
				
			||||||
        WHERE guilds.guild = ?",
 | 
					        ",
 | 
				
			||||||
        id
 | 
					        id
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    .fetch_all(pool.inner())
 | 
					    .fetch_all(pool.inner())
 | 
				
			||||||
@@ -96,7 +97,7 @@ pub async fn import(
 | 
				
			|||||||
            Ok(body) => {
 | 
					            Ok(body) => {
 | 
				
			||||||
                let mut reader = csv::Reader::from_reader(body.as_slice());
 | 
					                let mut reader = csv::Reader::from_reader(body.as_slice());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                let query_placeholder = "(?, (SELECT id FROM channels WHERE channel = ?), (SELECT id FROM guilds WHERE guild = ?))";
 | 
					                let query_placeholder = "(?, (SELECT id FROM channels WHERE channel = ?), ?)";
 | 
				
			||||||
                let mut query_params = vec![];
 | 
					                let mut query_params = vec![];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for result in reader.deserialize::<TodoCsv>() {
 | 
					                for result in reader.deserialize::<TodoCsv>() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -373,12 +373,12 @@ pub(crate) async fn create_reminder(
 | 
				
			|||||||
    reminder: CreateReminder,
 | 
					    reminder: CreateReminder,
 | 
				
			||||||
) -> JsonResult {
 | 
					) -> JsonResult {
 | 
				
			||||||
    // check guild in db
 | 
					    // check guild in db
 | 
				
			||||||
    match sqlx::query!("SELECT 1 as A FROM guilds WHERE guild = ?", guild_id.get())
 | 
					    match sqlx::query!("SELECT 1 as A FROM guilds WHERE id = ?", guild_id.get())
 | 
				
			||||||
        .fetch_one(transaction.executor())
 | 
					        .fetch_one(transaction.executor())
 | 
				
			||||||
        .await
 | 
					        .await
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Err(sqlx::Error::RowNotFound) => {
 | 
					        Err(sqlx::Error::RowNotFound) => {
 | 
				
			||||||
            if sqlx::query!("INSERT INTO guilds (guild) VALUES (?)", guild_id.get())
 | 
					            if sqlx::query!("INSERT INTO guilds (id) VALUES (?)", guild_id.get())
 | 
				
			||||||
                .execute(transaction.executor())
 | 
					                .execute(transaction.executor())
 | 
				
			||||||
                .await
 | 
					                .await
 | 
				
			||||||
                .is_err()
 | 
					                .is_err()
 | 
				
			||||||
@@ -659,7 +659,7 @@ pub(crate) async fn create_reminder_template(
 | 
				
			|||||||
         interval_months,
 | 
					         interval_months,
 | 
				
			||||||
         tts,
 | 
					         tts,
 | 
				
			||||||
         username
 | 
					         username
 | 
				
			||||||
        ) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 | 
					        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 | 
				
			||||||
         ?, ?, ?, ?, ?, ?, ?)",
 | 
					         ?, ?, ?, ?, ?, ?, ?)",
 | 
				
			||||||
        guild_id.get(),
 | 
					        guild_id.get(),
 | 
				
			||||||
        name,
 | 
					        name,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user