This commit is contained in:
Djkáťo 2024-02-14 13:44:29 +01:00
parent b3c3c8cfb0
commit 083d53d335
5 changed files with 732 additions and 67 deletions

1
.env Normal file
View file

@ -0,0 +1 @@
DATABASE_URL=""

2
.gitignore vendored
View file

@ -2,7 +2,7 @@
/target /target
# Tokens # Tokens
.env # .env
# Hidden files # Hidden files
/src/.* /src/.*

757
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -16,10 +16,8 @@ serenity = { version = "0.12.0", default-features = false, features = ["client",
serenity_utils = "0.7.0" serenity_utils = "0.7.0"
tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.29.1", features = ["macros", "rt-multi-thread"] }
regex = "1.9.0" regex = "1.9.0"
# sqlite = "0.32.0"
# async-sqlite = { version = "0.2.1", default-features = false }
async-rusqlite = "0.4.0"
chrono = "0.4.31" chrono = "0.4.31"
sqlx = {version="0.7.3", features=["runtime-tokio", "sqlite"]}
[features] [features]
DEBUG = [] DEBUG = []

View file

@ -1,20 +1,16 @@
use chrono::{Datelike, Local};
use serenity::prelude::*; use serenity::prelude::*;
use chrono::{Local, Datelike};
// use async_sqlite::{rusqlite::{Rows, Statement}, ClientBuilder, JournalMode};
use crate::util::debug::send_error; use crate::util::debug::send_error;
use anyhow::Result; use anyhow::Result;
use async_rusqlite::Connection;
pub async fn notice_wrapper(ctx: Context) { pub async fn notice_wrapper(ctx: Context) {
match notice(ctx.clone()).await { match notice(ctx.clone()).await {
Ok(_) => return, Ok(_) => return,
Err(e) => { Err(e) => {
send_error(ctx.http.clone(), e.to_string()).await; send_error(ctx.http.clone(), e.to_string()).await;
return return;
} }
} }
} }
@ -22,7 +18,7 @@ pub async fn notice_wrapper(ctx: Context) {
struct BirtdayRow { struct BirtdayRow {
day: u8, day: u8,
month: u8, month: u8,
nick: String nick: String,
} }
async fn notice(ctx: Context) -> anyhow::Result<()> { async fn notice(ctx: Context) -> anyhow::Result<()> {
@ -30,12 +26,16 @@ async fn notice(ctx: Context) -> anyhow::Result<()> {
let day = local.day(); let day = local.day();
let month = local.month(); let month = local.month();
let pool = sqlx::sqlite::SqlitePoolOptions::new()
.connect("my.db")
.await?;
let conn = Connection::open("my.db").await?; let birtdays: Vec<BirtdayRow> = sqlx::query_as!(
BirtdayRow,
let stmt = conn.call(move |conn| { "SELECT * FROM birthdays WHERE day=6 AND month=3;"
conn.prepare("SELECT * FROM birthdays WHERE day=6 AND month=3;") )
}).await?; .fetch(&pool)
.await?;
// let result = Vec::new(); // let result = Vec::new();
// let stmt = client.conn(|conn| { // let stmt = client.conn(|conn| {
@ -50,7 +50,7 @@ async fn notice(ctx: Context) -> anyhow::Result<()> {
let bd = BirtdayRow { let bd = BirtdayRow {
day: row.get(1)?, day: row.get(1)?,
month: row.get(2)?, month: row.get(2)?,
nick: row.get(3)? nick: row.get(3)?,
}; };
result.push(bd); result.push(bd);
} }
@ -65,3 +65,4 @@ async fn notice(ctx: Context) -> anyhow::Result<()> {
Ok(()) Ok(())
} }