use sqlite::{State, Error}; use crate::database; pub struct Database { ins_connection: &'static database::DB_CONNECTION,//Mutex>, } 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::(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, } } }