Solve db creation error
This commit is contained in:
Generated
+2
-2
@@ -3082,9 +3082,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rand"
|
name = "rand"
|
||||||
version = "0.10.0"
|
version = "0.10.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
|
checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chacha20",
|
"chacha20",
|
||||||
"getrandom 0.4.1",
|
"getrandom 0.4.1",
|
||||||
|
|||||||
+3
-3
@@ -5,14 +5,14 @@ edition = "2024"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
iced = { version = "0.14.0", features = ["tokio"]}
|
iced = { version = "0.14.0", features = ["tokio"]}
|
||||||
rand = "0.10.0"
|
rand = "0.10.1"
|
||||||
dirs = "6.0.0"
|
dirs = "6.0.0"
|
||||||
serde = { version = "1.0.144", features = ["derive"] }
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
serde_json = "1.0.149"
|
serde_json = "1.0.149"
|
||||||
rhai = "1.24.0"
|
rhai = "1.24.0"
|
||||||
chrono = "0.4.44"
|
chrono = "0.4.44"
|
||||||
rusqlite = { version = "0.39.0", features = ["chrono"] }
|
rusqlite = { version = "0.39.0", features = ["chrono"] }
|
||||||
reqwest = { version = "0.12", features = ["json", "stream"] }
|
reqwest = { version = "0", features = ["json", "stream"] }
|
||||||
rodio = "0.22.2"
|
rodio = "0.22.2"
|
||||||
sha2 = "0.11.0"
|
sha2 = "0.11.0"
|
||||||
hex = "0.4.3"
|
hex = "0.4.3"
|
||||||
|
|||||||
+63
-51
@@ -17,51 +17,68 @@ pub fn create_db() {
|
|||||||
|
|
||||||
fn create_tables(conn: &Connection) {
|
fn create_tables(conn: &Connection) {
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"
|
"create table card_set
|
||||||
CREATE TABLE word_group (
|
(
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER
|
||||||
name TEXT NOT NULL
|
primary key autoincrement,
|
||||||
);
|
name TEXT not null,
|
||||||
|
forward TEXT not null,
|
||||||
insert into word_group (name)
|
backward TEXT not null,
|
||||||
values (\"Слова\");
|
filter TEXT not null
|
||||||
|
);",
|
||||||
CREATE TABLE words (
|
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
key TEXT NOT NULL,
|
|
||||||
value TEXT NOT NULL,
|
|
||||||
tags TEXT NOT NULL,
|
|
||||||
more TEXT,
|
|
||||||
group_id INTEGER NOT NULL DEFAULT 1,
|
|
||||||
FOREIGN KEY(group_id) REFERENCES word_group(id)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE card_stats (
|
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
word_id INTEGER NOT NULL,
|
|
||||||
set_id TEXT NOT NULL,
|
|
||||||
score INTEGER NOT NULL DEFAULT 1,
|
|
||||||
last_opened INTEGER NOT NULL,
|
|
||||||
FOREIGN KEY (word_id) REFERENCES words (id) ON DELETE CASCADE,
|
|
||||||
FOREIGN KEY (set_id) REFERENCES card_set (id) ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE card_set (
|
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
name TEXT NOT NULL,
|
|
||||||
forward TEXT NOT NULL,
|
|
||||||
backward TEXT NOT NULL,
|
|
||||||
filter TEXT NOT NULL
|
|
||||||
);
|
|
||||||
",
|
|
||||||
(),
|
(),
|
||||||
)
|
)
|
||||||
.unwrap_or_else(|e| {
|
.unwrap();
|
||||||
println!("{}", e);
|
conn.execute(
|
||||||
0
|
"create table word_group
|
||||||
});
|
(
|
||||||
|
id INTEGER
|
||||||
|
primary key autoincrement,
|
||||||
|
name TEXT not null
|
||||||
|
);",
|
||||||
|
(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
conn.execute(
|
||||||
|
"create table words
|
||||||
|
(
|
||||||
|
id INTEGER
|
||||||
|
primary key autoincrement,
|
||||||
|
key TEXT not null,
|
||||||
|
value TEXT not null,
|
||||||
|
tags TEXT not null,
|
||||||
|
more TEXT,
|
||||||
|
group_id integer default 1 not null
|
||||||
|
constraint words_word_group_id_fk
|
||||||
|
references word_group
|
||||||
|
on update cascade on delete cascade
|
||||||
|
);",
|
||||||
|
(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
conn.execute(
|
||||||
|
"create table card_stats
|
||||||
|
(
|
||||||
|
id INTEGER
|
||||||
|
primary key autoincrement,
|
||||||
|
word_id INTEGER not null
|
||||||
|
references words
|
||||||
|
on delete cascade,
|
||||||
|
set_id TEXT not null
|
||||||
|
references card_set
|
||||||
|
on delete cascade,
|
||||||
|
score INTEGER default 1 not null,
|
||||||
|
last_opened integer not null
|
||||||
|
);",
|
||||||
|
(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
conn.execute(
|
||||||
|
"insert into word_group (name)
|
||||||
|
values (\"Слова\");",
|
||||||
|
(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_word(word: &mut WordData, connection: &Connection) {
|
pub fn add_word(word: &mut WordData, connection: &Connection) {
|
||||||
@@ -171,9 +188,7 @@ pub fn add_group(group: &mut WordGroup, connection: &Connection) {
|
|||||||
let index = connection
|
let index = connection
|
||||||
.query_row(
|
.query_row(
|
||||||
"INSERT INTO word_group (name) VALUES (?1) RETURNING id",
|
"INSERT INTO word_group (name) VALUES (?1) RETURNING id",
|
||||||
(
|
(&group.name,),
|
||||||
&group.name,
|
|
||||||
),
|
|
||||||
|row| row.get(0),
|
|row| row.get(0),
|
||||||
)
|
)
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
@@ -191,10 +206,7 @@ pub fn update_group(group: &mut WordGroup, connection: &Connection) {
|
|||||||
connection
|
connection
|
||||||
.execute(
|
.execute(
|
||||||
"UPDATE word_group SET name = ?1 WHERE id = ?5",
|
"UPDATE word_group SET name = ?1 WHERE id = ?5",
|
||||||
(
|
(&group.name, &group.id),
|
||||||
&group.name,
|
|
||||||
&group.id,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
.unwrap_or_else(|e| {
|
.unwrap_or_else(|e| {
|
||||||
println!("{}", e);
|
println!("{}", e);
|
||||||
@@ -213,4 +225,4 @@ pub fn delete_group(group: &WordGroup, connection: &Connection) {
|
|||||||
println!("{}", e);
|
println!("{}", e);
|
||||||
0
|
0
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user