sqliteService实现, 其他服务文件占位
This commit is contained in:
56
src/services/sqlite_service.rs
Normal file
56
src/services/sqlite_service.rs
Normal file
@@ -0,0 +1,56 @@
|
||||
use anyhow::Result;
|
||||
use crate::models::write_result::WriteResult;
|
||||
use rusqlite::{Connection};
|
||||
|
||||
pub(crate) struct SqliteService {
|
||||
conn: Connection,
|
||||
}
|
||||
impl Default for SqliteService {
|
||||
fn default() -> Self {
|
||||
//TODO: fix cant use path to create service
|
||||
return match Self::new(".data.db".to_string()){
|
||||
Ok(service) => service,
|
||||
Err(err) => panic!("{}", err.to_string())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SqliteService {
|
||||
pub fn new(conn_str: String) -> Result<Self> {
|
||||
let conn = Connection::open(conn_str)?;
|
||||
Ok(Self { conn })
|
||||
}
|
||||
|
||||
pub fn create_table(&self) -> Result<()> {
|
||||
self.conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS write_results (
|
||||
id INTEGER PRIMARY KEY,
|
||||
imei TEXT NOT NULL,
|
||||
sn TEXT NOT NULL,
|
||||
write_date TEXT NOT NULL
|
||||
)",
|
||||
[],
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn insert(&self, write_result: WriteResult) -> Result<()> {
|
||||
self.conn.execute(
|
||||
"INSERT INTO write_results (imei, sn, write_date) VALUES (?1, ?2, ?3)",
|
||||
&[&write_result.imei, &write_result.sn, &write_result.write_date],
|
||||
)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn check_sn(&self, sn: &str) -> Result<bool> {
|
||||
let mut stmt = self.conn.prepare("SELECT sn FROM write_results WHERE sn = ?1")?;
|
||||
let mut rows = stmt.query(&[&sn])?;
|
||||
Ok(rows.next()?.is_some())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn create_sql_service_test() {
|
||||
let service = SqliteService::default();
|
||||
}
|
||||
Reference in New Issue
Block a user