fix: supports old sqlite version in downgrade
This commit is contained in:
parent
97178fcb02
commit
c20f3c3411
4 changed files with 18 additions and 11 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
||||||
target/
|
target/
|
||||||
Cargo.lock
|
Cargo.lock
|
||||||
|
|
||||||
|
# sqlite databases
|
||||||
|
*.db
|
||||||
|
|
|
@ -12,8 +12,6 @@ pub(crate) fn apply_sql(app: &App, cmd_opts: ApplyCommandOpt) -> StdResult<()> {
|
||||||
|
|
||||||
let migration_manager = MigrationManager::from(&config);
|
let migration_manager = MigrationManager::from(&config);
|
||||||
|
|
||||||
println!("here");
|
|
||||||
|
|
||||||
let file_contents = cmd_opts
|
let file_contents = cmd_opts
|
||||||
.file_paths
|
.file_paths
|
||||||
.clone()
|
.clone()
|
||||||
|
@ -35,7 +33,6 @@ pub(crate) fn apply_sql(app: &App, cmd_opts: ApplyCommandOpt) -> StdResult<()> {
|
||||||
file_contents
|
file_contents
|
||||||
.iter()
|
.iter()
|
||||||
.try_for_each(|content| {
|
.try_for_each(|content| {
|
||||||
println!("{}", &content);
|
|
||||||
maybe_with_transaction(
|
maybe_with_transaction(
|
||||||
!cmd_opts.transaction_opts.single_transaction,
|
!cmd_opts.transaction_opts.single_transaction,
|
||||||
conn,
|
conn,
|
||||||
|
|
|
@ -476,7 +476,7 @@ mod upgrade {
|
||||||
inner("sqlite", || {
|
inner("sqlite", || {
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
|
|
||||||
let conn = Connection::open_in_memory()?;
|
let conn = Connection::open(SQLITE_URL)?;
|
||||||
let res =
|
let res =
|
||||||
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a")?;
|
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a")?;
|
||||||
assert_eq!(res, ());
|
assert_eq!(res, ());
|
||||||
|
@ -682,7 +682,6 @@ mod apply {
|
||||||
|
|
||||||
#[cfg(any(feature = "sqlite", feature = "rusqlite"))]
|
#[cfg(any(feature = "sqlite", feature = "rusqlite"))]
|
||||||
remove_sqlite_db().and_then(|_| {
|
remove_sqlite_db().and_then(|_| {
|
||||||
println!("upgrade");
|
|
||||||
inner(
|
inner(
|
||||||
"sqlite",
|
"sqlite",
|
||||||
vec![
|
vec![
|
||||||
|
@ -692,8 +691,7 @@ mod apply {
|
||||||
|| {
|
|| {
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
|
|
||||||
let conn = Connection::open_in_memory()?;
|
let conn = Connection::open(SQLITE_URL)?;
|
||||||
println!("upgraded?");
|
|
||||||
let res =
|
let res =
|
||||||
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a")?;
|
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a")?;
|
||||||
assert_eq!(res, ());
|
assert_eq!(res, ());
|
||||||
|
@ -702,7 +700,6 @@ mod apply {
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
println!("downgrade");
|
|
||||||
inner(
|
inner(
|
||||||
"sqlite",
|
"sqlite",
|
||||||
vec![
|
vec![
|
||||||
|
@ -712,7 +709,7 @@ mod apply {
|
||||||
|| {
|
|| {
|
||||||
use rusqlite::Connection;
|
use rusqlite::Connection;
|
||||||
|
|
||||||
let conn = Connection::open_in_memory()?;
|
let conn = Connection::open(SQLITE_URL)?;
|
||||||
let res =
|
let res =
|
||||||
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a");
|
conn.execute_batch("SELECT p.id, a.id FROM persons AS p, articles AS a");
|
||||||
assert!(res.is_err());
|
assert!(res.is_err());
|
||||||
|
|
|
@ -1,6 +1,16 @@
|
||||||
-- This file should undo anything in `up.sql`
|
-- This file should undo anything in `up.sql`
|
||||||
|
|
||||||
ALTER TABLE articles
|
CREATE TABLE tmp_articles (
|
||||||
DROP COLUMN author_person_id;
|
id int AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
title text NOT NULL CHECK (length(title) > 0),
|
||||||
|
content text NOT NULL,
|
||||||
|
created_at timestamp NOT NULL DEFAULT current_timestamp
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tmp_articles (id, title, content, created_at)
|
||||||
|
SELECT id, title, content, created_at FROM articles;
|
||||||
|
|
||||||
|
DROP TABLE articles;
|
||||||
|
ALTER TABLE tmp_articles RENAME TO articles;
|
||||||
|
|
||||||
DROP TABLE persons;
|
DROP TABLE persons;
|
||||||
|
|
Reference in a new issue