diff --git a/.sqlx/query-cec6db96b0061381aa39fc43ab63548b5298f7bf8cb67ed0c11d809dbb5a5fe3.json b/.sqlx/query-cec6db96b0061381aa39fc43ab63548b5298f7bf8cb67ed0c11d809dbb5a5fe3.json new file mode 100644 index 0000000..33810a7 --- /dev/null +++ b/.sqlx/query-cec6db96b0061381aa39fc43ab63548b5298f7bf8cb67ed0c11d809dbb5a5fe3.json @@ -0,0 +1,12 @@ +{ + "db_name": "PostgreSQL", + "query": "update members set fresher='f'", + "describe": { + "columns": [], + "parameters": { + "Left": [] + }, + "nullable": [] + }, + "hash": "cec6db96b0061381aa39fc43ab63548b5298f7bf8cb67ed0c11d809dbb5a5fe3" +} diff --git a/src/cmds.rs b/src/cmds.rs index 912df2d..f8241aa 100644 --- a/src/cmds.rs +++ b/src/cmds.rs @@ -407,6 +407,21 @@ pub(crate) async fn edit_member_fresher( } Ok(()) } + +/// Set all members to non-freshers +#[poise::command(slash_command)] +pub(crate) async fn set_members_non_fresher(ctx: ACtx<'_>) -> Result<(), Error> { + println!("Cmd: ({}) set_members_non_fresher", ctx.author().name); + let updated = db::set_members_non_fresher(&ctx.data().db).await?; + ctx.say(format!("{updated} updated to non-fresher, removing roles")) + .await?; + for mut m in ctx.data().server.members(ctx.http(), None, None).await? { + let _ = m.remove_role(ctx.http(), ctx.data().fresher).await; + } + ctx.say("Roles removed").await?; + Ok(()) +} + /// Get the number of pending members in the pending table #[poise::command(slash_command)] pub(crate) async fn count_pending(ctx: ACtx<'_>) -> Result<(), Error> { diff --git a/src/db/members.rs b/src/db/members.rs index c2cc3d3..8811521 100644 --- a/src/db/members.rs +++ b/src/db/members.rs @@ -241,3 +241,11 @@ pub(crate) async fn edit_member_fresher( .rows_affected(); Ok(r == 1) } + +/// Set all members to non-freshers +pub(crate) async fn set_members_non_fresher(pool: &sqlx::PgPool) -> Result { + Ok(sqlx::query!("update members set fresher='f'") + .execute(pool) + .await? + .rows_affected()) +} diff --git a/src/main.rs b/src/main.rs index 318c0e6..5723410 100644 --- a/src/main.rs +++ b/src/main.rs @@ -122,6 +122,7 @@ async fn poise( cmds::insert_member_from_pending(), cmds::insert_member_from_manual(), cmds::edit_member(), + cmds::set_members_non_fresher(), cmds::count_pending(), cmds::delete_pending(), cmds::get_all_pending(),