1pub mod bookmarks;
2pub mod db;
3pub mod display;
4pub mod export;
5pub mod transactions;
6pub mod repl;
7
8pub use repl::repl_mode;
9pub use db::list_tables;
10pub use display::{execute_sql, show_table_schema, show_all_schemas, show_database_info, OutputFormat, QueryOptions};
11pub use export::export_to_csv;
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16 use tempfile::NamedTempFile;
17
18 #[test]
19 fn test_list_tables() {
20 let temp_db = NamedTempFile::new().unwrap();
21 let db_path = temp_db.path().to_str().unwrap();
22
23 let conn = rusqlite::Connection::open(db_path).unwrap();
25 conn.execute(
26 "CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)",
27 [],
28 ).unwrap();
29
30 let tables = list_tables(db_path).unwrap();
32 assert!(tables.contains(&"test_table".to_string()));
33 }
34
35 #[test]
36 fn test_execute_sql() {
37 let temp_db = NamedTempFile::new().unwrap();
38 let db_path = temp_db.path().to_str().unwrap();
39
40 let conn = rusqlite::Connection::open(db_path).unwrap();
41 conn.execute(
42 "CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)",
43 [],
44 ).unwrap();
45
46 execute_sql(&conn, "INSERT INTO test_table (name) VALUES ('test')", &QueryOptions::default()).unwrap();
48
49 execute_sql(&conn, "SELECT id, name FROM test_table", &QueryOptions::default()).unwrap();
51 }
52
53 #[test]
54 fn test_show_table_schema() {
55 let temp_db = NamedTempFile::new().unwrap();
56 let db_path = temp_db.path().to_str().unwrap();
57
58 let conn = rusqlite::Connection::open(db_path).unwrap();
59 conn.execute(
60 "CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)",
61 [],
62 ).unwrap();
63
64 show_table_schema(&conn, "test_table").unwrap();
66 }
67
68 #[test]
69 fn test_show_all_schemas() {
70 let temp_db = NamedTempFile::new().unwrap();
71 let db_path = temp_db.path().to_str().unwrap();
72
73 let conn = rusqlite::Connection::open(db_path).unwrap();
74 conn.execute(
75 "CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)",
76 [],
77 ).unwrap();
78
79 show_all_schemas(&conn).unwrap();
81 }
82
83 #[test]
84 fn test_show_database_info() {
85 let temp_db = NamedTempFile::new().unwrap();
86 let db_path = temp_db.path().to_str().unwrap();
87
88 let conn = rusqlite::Connection::open(db_path).unwrap();
89 conn.execute(
90 "CREATE TABLE test_table (id INTEGER PRIMARY KEY, name TEXT)",
91 [],
92 ).unwrap();
93
94 show_database_info(&conn, db_path).unwrap();
96 }
97}