Skip to content

Commit 73232db

Browse files
committed
fix sqlite in memory and tests
1 parent 9ae3f98 commit 73232db

File tree

3 files changed

+15
-25
lines changed

3 files changed

+15
-25
lines changed

.github/workflows/rust.yml

-7
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,8 @@ jobs:
2121
ports:
2222
- 3306:3306
2323
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
24-
sqlite:
25-
image: kartoza/sqlite
26-
env:
27-
SQLITE_DATABASE: test.db
28-
ports:
29-
- 5432:5432
3024
env:
3125
MYSQL_DATABASE_URL: mysql://root:[email protected]:3306/test_db
32-
SQLITE_DATABASE_URL: sqlite://test.db
3326
steps:
3427
- uses: actions/checkout@v3
3528
- name: Build

src/dbc/sqlite.rs

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1-
use crate::dbc;
21
use std::sync::Arc;
2+
33
use rusqlite;
44

5+
use crate::dbc;
6+
57
pub(crate) struct SQLiteConnection {
68
connection: rusqlite::Connection,
79
}
810

911
impl SQLiteConnection {
1012
pub(crate) fn get_connection(url: &str) -> Result<Box<dyn dbc::Connection>, dbc::Error> {
13+
let connection;
14+
if url == "sqlite://:memory:" {
15+
connection = rusqlite::Connection::open_in_memory()?;
16+
} else {
17+
connection = rusqlite::Connection::open(url)?;
18+
}
1119
Ok(Box::new(SQLiteConnection {
12-
connection: rusqlite::Connection::open(url)?,
20+
connection,
1321
}) as Box<dyn dbc::Connection>)
1422
}
1523
}
@@ -42,7 +50,7 @@ impl dbc::Connection for SQLiteConnection {
4250
columns: Arc::clone(&columns),
4351
});
4452
}
45-
Ok(dbc::QueryResult{
53+
Ok(dbc::QueryResult {
4654
rows,
4755
})
4856
}

tests/sqlite_test.rs

+4-15
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,9 @@ use rdbc2::dbc;
22

33
type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
44

5-
fn _get_sqlite_connection_url() -> String {
6-
if std::env::var("SQLITE_DATABASE_URL").is_ok() {
7-
std::env::var("SQLITE_DATABASE_URL").unwrap()
8-
} else {
9-
"sqlite://:memory:".to_owned()
10-
}
11-
}
12-
135
#[tokio::test]
146
async fn test_sqlite_simple_query() -> Result<(), Error> {
15-
let url = _get_sqlite_connection_url();
16-
let mut database = dbc::Database::new(url.as_str())?;
7+
let mut database = dbc::Database::new("sqlite://:memory:")?;
178
let query = "SELECT 1";
189
let result = database.execute_query(query)?;
1910
assert_eq!(result.rows.len(), 1);
@@ -23,8 +14,7 @@ async fn test_sqlite_simple_query() -> Result<(), Error> {
2314

2415
#[tokio::test]
2516
async fn test_sqlite_query_with_params() -> Result<(), Error> {
26-
let url = _get_sqlite_connection_url();
27-
let mut database = dbc::Database::new(url.as_str())?;
17+
let mut database = dbc::Database::new("sqlite://:memory:")?;
2818
let query = "SELECT ? + ?";
2919
let result = database.execute_query_with_params(query, &["1", "2"])?;
3020
assert_eq!(result.rows.len(), 1);
@@ -34,11 +24,10 @@ async fn test_sqlite_query_with_params() -> Result<(), Error> {
3424

3525
#[tokio::test]
3626
async fn test_sqlite_query_with_params_and_serialize() -> Result<(), Error> {
37-
let url = _get_sqlite_connection_url();
38-
let mut database = dbc::Database::new(url.as_str())?;
27+
let mut database = dbc::Database::new("sqlite://:memory:")?;
3928
let query = "SELECT ? + ?";
4029
let result = database.execute_query_with_params_and_serialize(query, &["1", "2"])?;
41-
assert_eq!(result, r#"{"rows":[{"values":[{"Bytes":[50]}],"columns":[{"name":"1 + 1","column_type":"LONGLONG"}]}]}"#);
30+
assert_eq!(result, r#"{"rows":[{"values":[{"Int":2}],"columns":[{"name":"1 + 1","column_type":"STRING"}]}]}"#); // currently all columns are STRING
4231

4332
Ok(())
4433
}

0 commit comments

Comments
 (0)