Files
jap_learn/src/data_provider/sqlite.rs
T

57 lines
1.7 KiB
Rust
Raw Normal View History

2026-06-15 17:06:02 +03:00
use rusqlite::Connection;
2026-08-24 01:22:00 +03:00
use crate::fs::*;
2026-06-15 17:06:02 +03:00
pub fn create_db() {
2026-08-24 01:22:00 +03:00
let db_file = db_path();
2026-06-15 17:06:02 +03:00
if !db_file.exists() {
std::fs::File::create(&db_file).unwrap();
let connection = Connection::open(&db_file).unwrap();
connection.execute("PRAGMA foreign_keys = ON;", []).unwrap();
create_tables(&connection);
}
}
fn create_tables(conn: &Connection) {
make_card_set(conn).unwrap();
make_settings(conn).unwrap();
make_word_group(conn).unwrap();
make_words(conn).unwrap();
make_card_stats(conn).unwrap();
}
fn make_settings(conn: &Connection) -> Result<(), rusqlite::Error> {
let query = include_str!("../../sql/settings.sql");
conn.execute(query, ())?;
Ok(())
}
fn make_card_set(conn: &Connection) -> Result<(), rusqlite::Error> {
let query = include_str!("../../sql/card_set.sql");
conn.execute(query, ())?;
Ok(())
}
fn make_word_group(conn: &Connection) -> Result<(), rusqlite::Error> {
let query = include_str!("../../sql/word_group.sql");
conn.execute(query, ())?;
conn.execute("insert into word_group (name) values (\"Слова\");", ())?;
Ok(())
}
fn make_words(conn: &Connection) -> Result<(), rusqlite::Error> {
let query = include_str!("../../sql/words.sql");
conn.execute(query, ())?;
Ok(())
}
fn make_card_stats(conn: &Connection) -> Result<(), rusqlite::Error> {
let query = include_str!("../../sql/card_stats.sql");
conn.execute(query, ())?;
Ok(())
}
2026-08-13 09:06:22 +03:00
pub fn default_connection() -> Connection {
2026-08-24 01:22:00 +03:00
let db_file = db_path();
2026-08-13 09:06:22 +03:00
let connection = Connection::open(db_file).unwrap();
connection.execute("PRAGMA foreign_keys = ON;", []).unwrap();
connection
2026-08-15 21:32:24 +03:00
}