Files
mini_admin_bot/src/ban_stiker/database.rs
2025-05-10 21:49:23 +02:00

62 lines
1.9 KiB
Rust

use crate::database;
use sqlite::{Error, State};
pub struct Database {
ins_connection: &'static database::DB_CONNECTION, //Mutex<Box<sqlite::Connection>>,
}
pub const T_STIKER: i64 = 1;
pub const T_GIF: i64 = 2;
pub const T_PHOTO: i64 = 3;
impl<'a> Database {
pub fn get_database() -> Self {
let ret = Self {
ins_connection: &database::DB_CONNECTION,
};
ret.create_table();
ret
}
fn create_table(&self) -> bool {
match self.ins_connection.lock().unwrap()
.execute(
"
CREATE TABLE IF NOT EXISTS bmedia ( id_group TEXT, id_stiker TEXT, media_type INTEGER, id INTEGER PRIMARY KEY AUTOINCREMENT);
",
)
{
Ok(_a) => return true,
Err(e) => {log::error!("error stiker {}",e);return false},
}
}
pub fn media_is_banned(&self, stiker_id: &str, media_type: i64) -> bool {
let builder = self.ins_connection.lock().unwrap();
let mut statement = builder
.prepare("SELECT id_stiker FROM bmedia WHERE id_stiker = ? and media_type=?")
.unwrap();
statement.bind((1, stiker_id)).unwrap();
statement.bind((2, media_type)).unwrap();
statement.next().unwrap();
match statement.read::<String, _>(0) {
Ok(_s) => true,
Err(_e) => false,
}
}
pub fn add_media(&self, stiker_id: &str, group_id: &str, media_type: i64) -> bool {
let builder = self.ins_connection.lock().unwrap();
let mut statement = builder
.prepare("INSERT INTO bmedia (id_stiker, id_group, media_type) VALUES (?,?,?)")
.unwrap();
statement.bind((1, stiker_id)).unwrap();
statement.bind((2, group_id)).unwrap();
statement.bind((3, media_type)).unwrap();
match statement.next() {
Ok(_s) => true,
Err(_e) => false,
}
}
}