diff --git a/src/commands/count.rs b/src/commands/count.rs index 592b7a0..9ccdd04 100644 --- a/src/commands/count.rs +++ b/src/commands/count.rs @@ -18,7 +18,7 @@ use tokio_postgres::Row; pub async fn count(ctx: &Context, msg: &Message, args: Args) -> CommandResult { let query: String = args.raw().collect::>().join(" "); if query == "" { - msg.reply(ctx, "bruh kitna kya?").await?; + msg.reply(ctx, "Count what?").await?; return Ok(()); } let data_read = ctx.data.read().await; @@ -29,23 +29,18 @@ pub async fn count(ctx: &Context, msg: &Message, args: Args) -> CommandResult { let id = msg.author.id.to_string(); let mut query_helper = db - .query( - format!("SELECT name FROM words WHERE '{}' ~ reg", query).as_str(), - &[], - ) + .query("SELECT name FROM words WHERE $1 ~ reg", &[&query]) .await?; + if query_helper.is_empty() { query_helper = db - .query( - format!("SELECT name FROM words WHERE name='{}'", query).as_str(), - &[], - ) + .query("SELECT name FROM words WHERE name=$1", &[&query]) .await?; if query_helper.is_empty() { msg.reply( ctx, format!( - "No entry for '{}' found. If you want to add it, run ',cadd {}&'", + "No entry for '{}' found. If you want to add it, run `,cadd {}&`", query, query ), ) @@ -60,14 +55,18 @@ pub async fn count(ctx: &Context, msg: &Message, args: Args) -> CommandResult { }; for row in query_helper { let name: &str = row.get(0); - let query_result: i32 = db - .query_one( - format!("SELECT count FROM user{} WHERE name='{}'", id, name).as_str(), - &[], + let count_query = db + .query( + format!("SELECT count FROM user{} WHERE name=$1", id).as_str(), + &[&name], ) - .await? - .get(0); - reply = reply + &format!("\n{} count for you: {}", name, query_result); + .await?; + let query_result = if count_query.is_empty() { + 0 + } else { + count_query[0].get(0) + }; + reply += &format!("\n{} count for you: {}", name, query_result); } msg.reply(ctx, reply).await?; Ok(()) @@ -92,10 +91,7 @@ pub async fn cadd(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let check_existense = db - .query( - format!("SELECT name, reg FROM words WHERE name='{}'", queries[0]).as_str(), - &[], - ) + .query("SELECT name, reg FROM words WHERE name=$1", &[&queries[0]]) .await?; if check_existense.len() != 0 { let reg: String = check_existense[0].get(1); @@ -107,14 +103,12 @@ pub async fn cadd(ctx: &Context, msg: &Message, args: Args) -> CommandResult { return Ok(()); } db.execute( - format!( - "INSERT INTO words(name, reg, owner) VALUES('{}','(?i){}', '{}')", - queries[0], - queries[1], - msg.author.id.to_string() - ) - .as_str(), - &[], + "INSERT INTO words(name, reg, owner) VALUES($1, $2, $3)", + &[ + &queries[0], + &("(?i)".to_string() + queries[1]), + &msg.author.id.to_string(), + ], ) .await?; msg.reply(ctx, "Added").await?; @@ -135,10 +129,7 @@ pub async fn cremove(ctx: &Context, msg: &Message, args: Args) -> CommandResult .expect("Expected Database in TypeMap.") .clone(); let owner = db - .query( - format!("SELECT owner FROM words WHERE name = '{}'", query).as_str(), - &[], - ) + .query("SELECT owner FROM words WHERE name=$1", &[&query]) .await?; if owner.len() == 1 { let owner_id: String = owner[0].get(0); @@ -147,11 +138,8 @@ pub async fn cremove(ctx: &Context, msg: &Message, args: Args) -> CommandResult return Ok(()); } } - db.execute( - format!("DELETE FROM words WHERE name='{}'", query,).as_str(), - &[], - ) - .await?; + db.execute("DELETE FROM words WHERE name=$1", &[&query]) + .await?; msg.reply(ctx, "Deleted if it existed").await?; Ok(()) } @@ -175,10 +163,7 @@ pub async fn cedit(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let owner = db - .query( - format!("SELECT owner FROM words WHERE name = '{}'", queries[0]).as_str(), - &[], - ) + .query("SELECT owner FROM words WHERE name=$1", &[&queries[0]]) .await?; if owner.len() == 1 { let owner_id: String = owner[0].get(0); @@ -188,12 +173,8 @@ pub async fn cedit(ctx: &Context, msg: &Message, args: Args) -> CommandResult { } } db.execute( - format!( - "UPDATE words SET reg='(?i){}' WHERE name='{}'", - queries[1], queries[0] - ) - .as_str(), - &[], + "UPDATE words SET reg=$1 WHERE name=$2", + &[&("(?i)".to_string() + queries[1]), &queries[0]], ) .await?; msg.reply(ctx, "Changed the value if it existed").await?; @@ -255,7 +236,10 @@ pub async fn clist(ctx: &Context, msg: &Message, _: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let rows = db - .query("SELECT ROW_NUMBER() OVER (ORDER BY id), name, owner FROM words", &[]) + .query( + "SELECT ROW_NUMBER() OVER (ORDER BY id), name, owner FROM words", + &[], + ) .await?; if rows.is_empty() { msg.reply(ctx, "No words stored").await?; diff --git a/src/commands/tags.rs b/src/commands/tags.rs index 9481a18..c7e7880 100644 --- a/src/commands/tags.rs +++ b/src/commands/tags.rs @@ -28,20 +28,13 @@ pub async fn tag(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .clone(); let query_helper = db - .query( - format!("SELECT name, value FROM tags WHERE name='{}'", query).as_str(), - &[], - ) + .query("SELECT name, value FROM tags WHERE name=$1", &[&query]) .await?; if query_helper.is_empty() { let leven = db .query( - format!( - "SELECT name FROM tags WHERE levenshtein(name, '{}') < 2", - query - ) - .as_str(), - &[], + "SELECT name FROM tags WHERE levenshtein(name, $1) < 2", + &[&query], ) .await?; let l = if leven.is_empty() { @@ -84,20 +77,17 @@ pub async fn tadd(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let check_existense = db - .query( - format!("SELECT name FROM tags WHERE name='{}'", queries[0]).as_str(), - &[], - ) + .query("SELECT name FROM tags WHERE name=$1", &[&queries[0]]) .await?; if check_existense.len() != 0 { msg.reply(ctx, format!("This tag already exists")).await?; return Ok(()); } db.execute( - format!( - "INSERT INTO tags(name, value, owner) VALUES('{}','{}', '{}')", - queries[0], - format!( + "INSERT INTO tags(name, value, owner) VALUES($1, $2, $3)", + &[ + &queries[0], + &format!( "{}{}", if queries.len() == 2 { format!("{}{}", queries[1], '\n') @@ -110,10 +100,8 @@ pub async fn tadd(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .collect::>() .join("\n") ), - msg.author.id.to_string() - ) - .as_str(), - &[], + &msg.author.id.to_string(), + ], ) .await?; msg.reply(ctx, "Added").await?; @@ -138,24 +126,15 @@ pub async fn tcopy(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let check_existense = db - .query( - format!("SELECT name FROM tags WHERE name='{}'", queries[0]).as_str(), - &[], - ) + .query("SELECT name FROM tags WHERE name=$1", &[&queries[0]]) .await?; if check_existense.len() == 0 { msg.reply(ctx, format!("This tag does not exist")).await?; return Ok(()); } db.execute( - format!( - "INSERT INTO tags(name, value, owner) SELECT '{}', value, '{}' FROM tags WHERE name = '{}'", - queries[1], - msg.author.id.to_string(), - queries[0] - ) - .as_str(), - &[], + "INSERT INTO tags(name, value, owner) SELECT $1, value, $2 FROM tags WHERE name=$3", + &[&queries[1], &msg.author.id.to_string(), &queries[0]], ) .await?; msg.reply(ctx, "Copied").await?; @@ -176,10 +155,7 @@ pub async fn tremove(ctx: &Context, msg: &Message, args: Args) -> CommandResult .expect("Expected Database in TypeMap.") .clone(); let owner = db - .query( - format!("SELECT owner FROM tags WHERE name = '{}'", query).as_str(), - &[], - ) + .query("SELECT owner FROM tags WHERE name=$1", &[&query]) .await?; if owner.len() == 1 { let owner_id: String = owner[0].get(0); @@ -188,11 +164,8 @@ pub async fn tremove(ctx: &Context, msg: &Message, args: Args) -> CommandResult return Ok(()); } } - db.execute( - format!("DELETE FROM tags WHERE name='{}'", query,).as_str(), - &[], - ) - .await?; + db.execute("DELETE FROM tags WHERE name=$1", &[&query]) + .await?; msg.reply(ctx, "Deleted if it existed").await?; Ok(()) } @@ -215,10 +188,7 @@ pub async fn tedit(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .expect("Expected Database in TypeMap.") .clone(); let owner = db - .query( - format!("SELECT owner FROM tags WHERE name = '{}'", queries[0]).as_str(), - &[], - ) + .query("SELECT owner FROM tags WHERE name=$1", &[&queries[0]]) .await?; if owner.len() == 1 { let owner_id: String = owner[0].get(0); @@ -228,9 +198,9 @@ pub async fn tedit(ctx: &Context, msg: &Message, args: Args) -> CommandResult { } } db.execute( - format!( - "UPDATE tags SET value='{}' WHERE name='{}'", - format!( + "UPDATE tags SET value=$1 WHERE name=$2", + &[ + &format!( "{}{}", if queries.len() == 2 { format!("{}{}", queries[1], '\n') @@ -243,10 +213,8 @@ pub async fn tedit(ctx: &Context, msg: &Message, args: Args) -> CommandResult { .collect::>() .join("\n") ), - queries[0] - ) - .as_str(), - &[], + &queries[0], + ], ) .await?; msg.reply(ctx, "Changed the value if it existed").await?; diff --git a/src/handler/count.rs b/src/handler/count.rs index 879b658..a85cfbc 100644 --- a/src/handler/count.rs +++ b/src/handler/count.rs @@ -18,46 +18,38 @@ pub async fn count(msg: Message, db: std::sync::Arc) { &[], ) .await - .expect("cant create a user table"); + .expect("Can't create a user table"); for row in db .query("SELECT name, reg FROM words", &[]) .await - .expect("can't get the words to count") + .expect("Can't get the words to count") { let name: &str = row.get(0); let regex: Regex = Regex::new(row.get(1)).unwrap(); - let count = regex.captures_iter(&msg.content).count(); + let count: i32 = regex.captures_iter(&msg.content).count() as i32; if count > 0 { let query_result = db .query( - format!("SELECT count FROM user{} where name='{}'", id, name).as_str(), - &[], + format!("SELECT count FROM user{} WHERE name=$1", id).as_str(), + &[&name], ) .await - .expect("cant select the count"); + .expect("Can't select count"); if query_result.is_empty() { db.execute( - format!( - "insert into user{} (name, count) values ('{}', 0)", - id, name - ) - .as_str(), - &[], + format!("INSERT INTO user{} (name, count) values ($1, 0)", id).as_str(), + &[&name], ) .await - .expect("cant insert shit"); + .expect("Can't insert count"); } db.execute( - format!( - "UPDATE user{} SET count = count + {} where name='{}'", - id, count, name - ) - .as_str(), - &[], + format!("UPDATE user{} SET count = count + $1 WHERE name=$2", id).as_str(), + &[&count, &name], ) .await - .expect("cant update"); + .expect("Can't update count"); } } }