diff --git a/src-core/src/db.rs b/src-core/src/db.rs index 36efec1..2abf611 100644 --- a/src-core/src/db.rs +++ b/src-core/src/db.rs @@ -7,7 +7,7 @@ use std::{ }, }; -use anyhow::Result; +use anyhow::{Ok, Result}; use rusqlite::Connection; mod yomitan; @@ -46,8 +46,17 @@ impl Database { }) } - pub fn is_yomitan_dbfile_exists(&self) -> bool { - self.dir.join(YOMITAN_DBFILE).exists() + pub fn is_yomitan_dbfile_init(&self) -> Result { + let yomitan_db_path = self.dir.join(YOMITAN_DBFILE); + + if yomitan_db_path.exists() { + return Ok(false); + } + + let conn = Connection::open(yomitan_db_path)?; + let mut stmt = conn.prepare("SELECT 1 FROM dictionaries")?; + + Ok(stmt.exists([])?) } pub fn yomitan(&self) -> Result { diff --git a/src-core/src/service.rs b/src-core/src/service.rs index adce4b7..4cbe64e 100644 --- a/src-core/src/service.rs +++ b/src-core/src/service.rs @@ -20,8 +20,8 @@ impl AppService { Ok(Self { db }) } - pub fn is_yomitan_setup_yet(&self) -> bool { - self.db.is_yomitan_dbfile_exists() + pub fn is_yomitan_setup_yet(&self) -> Result { + Ok(self.db.is_yomitan_dbfile_init()?) } pub fn search_yomitan( diff --git a/src-tauri/src/command.rs b/src-tauri/src/command.rs index 3d84aea..5cf4291 100644 --- a/src-tauri/src/command.rs +++ b/src-tauri/src/command.rs @@ -2,8 +2,8 @@ use cjdic2_core::{AppService, YomitanRow}; #[tauri::command] -pub fn is_yomitan_setup_yet(state: tauri::State) -> bool { - state.is_yomitan_setup_yet() +pub fn is_yomitan_setup_yet(state: tauri::State) -> Result { + state.is_yomitan_setup_yet().map_err(|e| e.to_string()) } #[tauri::command]