forked from groche97/mini_admin_bot
62 lines
1.9 KiB
Rust
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,
|
|
}
|
|
}
|
|
}
|