Added a route for importing templates
This commit is contained in:
		@@ -593,12 +593,113 @@ pub(crate) async fn create_reminder(
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn check_channel_matches_guild(ctx: &Context, channel_id: ChannelId, guild_id: GuildId) -> bool {
 | 
			
		||||
    return match ctx.cache.guild(guild_id) {
 | 
			
		||||
        Some(guild) => guild.channels.get(&channel_id).is_some(),
 | 
			
		||||
pub(crate) async fn create_reminder_template(
 | 
			
		||||
    ctx: &Context,
 | 
			
		||||
    transaction: &mut Transaction<'_>,
 | 
			
		||||
    guild_id: GuildId,
 | 
			
		||||
    reminder_template: ReminderTemplate,
 | 
			
		||||
) -> JsonResult {
 | 
			
		||||
    check_length!(MAX_CONTENT_LENGTH, reminder_template.content);
 | 
			
		||||
    check_length!(MAX_EMBED_DESCRIPTION_LENGTH, reminder_template.embed_description);
 | 
			
		||||
    check_length!(MAX_EMBED_TITLE_LENGTH, reminder_template.embed_title);
 | 
			
		||||
    check_length!(MAX_EMBED_AUTHOR_LENGTH, reminder_template.embed_author);
 | 
			
		||||
    check_length!(MAX_EMBED_FOOTER_LENGTH, reminder_template.embed_footer);
 | 
			
		||||
    check_length_opt!(MAX_EMBED_FIELDS, reminder_template.embed_fields);
 | 
			
		||||
    if let Some(fields) = &reminder_template.embed_fields {
 | 
			
		||||
        for field in &fields.0 {
 | 
			
		||||
            check_length!(MAX_EMBED_FIELD_VALUE_LENGTH, field.value);
 | 
			
		||||
            check_length!(MAX_EMBED_FIELD_TITLE_LENGTH, field.title);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    check_length_opt!(MAX_USERNAME_LENGTH, reminder_template.username);
 | 
			
		||||
    check_length_opt!(
 | 
			
		||||
        MAX_URL_LENGTH,
 | 
			
		||||
        reminder_template.embed_footer_url,
 | 
			
		||||
        reminder_template.embed_thumbnail_url,
 | 
			
		||||
        reminder_template.embed_author_url,
 | 
			
		||||
        reminder_template.embed_image_url,
 | 
			
		||||
        reminder_template.avatar
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
        None => false,
 | 
			
		||||
    // validate urls
 | 
			
		||||
    check_url_opt!(
 | 
			
		||||
        reminder_template.embed_footer_url,
 | 
			
		||||
        reminder_template.embed_thumbnail_url,
 | 
			
		||||
        reminder_template.embed_author_url,
 | 
			
		||||
        reminder_template.embed_image_url,
 | 
			
		||||
        reminder_template.avatar
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    let name = if reminder_template.name.is_empty() {
 | 
			
		||||
        template_name_default()
 | 
			
		||||
    } else {
 | 
			
		||||
        reminder_template.name.clone()
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    match sqlx::query!(
 | 
			
		||||
        "INSERT INTO reminder_template
 | 
			
		||||
        (guild_id,
 | 
			
		||||
         name,
 | 
			
		||||
         attachment,
 | 
			
		||||
         attachment_name,
 | 
			
		||||
         avatar,
 | 
			
		||||
         content,
 | 
			
		||||
         embed_author,
 | 
			
		||||
         embed_author_url,
 | 
			
		||||
         embed_color,
 | 
			
		||||
         embed_description,
 | 
			
		||||
         embed_footer,
 | 
			
		||||
         embed_footer_url,
 | 
			
		||||
         embed_image_url,
 | 
			
		||||
         embed_thumbnail_url,
 | 
			
		||||
         embed_title,
 | 
			
		||||
         embed_fields,
 | 
			
		||||
         interval_seconds,
 | 
			
		||||
         interval_days,
 | 
			
		||||
         interval_months,
 | 
			
		||||
         tts,
 | 
			
		||||
         username
 | 
			
		||||
        ) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
 | 
			
		||||
         ?, ?, ?, ?, ?, ?, ?)",
 | 
			
		||||
        guild_id.get(),
 | 
			
		||||
        name,
 | 
			
		||||
        reminder_template.attachment,
 | 
			
		||||
        reminder_template.attachment_name,
 | 
			
		||||
        reminder_template.avatar,
 | 
			
		||||
        reminder_template.content,
 | 
			
		||||
        reminder_template.embed_author,
 | 
			
		||||
        reminder_template.embed_author_url,
 | 
			
		||||
        reminder_template.embed_color,
 | 
			
		||||
        reminder_template.embed_description,
 | 
			
		||||
        reminder_template.embed_footer,
 | 
			
		||||
        reminder_template.embed_footer_url,
 | 
			
		||||
        reminder_template.embed_image_url,
 | 
			
		||||
        reminder_template.embed_thumbnail_url,
 | 
			
		||||
        reminder_template.embed_title,
 | 
			
		||||
        reminder_template.embed_fields,
 | 
			
		||||
        reminder_template.interval_seconds,
 | 
			
		||||
        reminder_template.interval_days,
 | 
			
		||||
        reminder_template.interval_months,
 | 
			
		||||
        reminder_template.tts,
 | 
			
		||||
        reminder_template.username,
 | 
			
		||||
    )
 | 
			
		||||
    .fetch_all(transaction.executor())
 | 
			
		||||
    .await
 | 
			
		||||
    {
 | 
			
		||||
        Ok(_) => Ok(json!({})),
 | 
			
		||||
        Err(e) => {
 | 
			
		||||
            warn!("Could not create template for {}: {:?}", guild_id.get(), e);
 | 
			
		||||
 | 
			
		||||
            json_err!("Could not create template")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn check_channel_matches_guild(ctx: &Context, channel_id: ChannelId, guild_id: GuildId) -> bool {
 | 
			
		||||
    match ctx.cache.guild(guild_id) {
 | 
			
		||||
        Some(guild) => guild.channels.get(&channel_id).is_some(),
 | 
			
		||||
        None => false,
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async fn create_database_channel(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user