From 1b801cbe12b555bf6ff3dc019c5013b40f325b85 Mon Sep 17 00:00:00 2001 From: Vincent Riquer Date: Tue, 8 Oct 2013 16:55:01 +0200 Subject: [PATCH] fat32compat & ascii as separate columns in DB --- lib/database/checkVersion | 11 +++++----- lib/database/upgradedatabase_1_2 | 37 ++++++++++++++++++++++++++++++++ lib/tools/ascii | 14 ++++++++++++ share/schema.sql | 2 ++ 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 lib/database/upgradedatabase_1_2 create mode 100644 lib/tools/ascii diff --git a/lib/database/checkVersion b/lib/database/checkVersion index eb80d20..8fe090b 100644 --- a/lib/database/checkVersion +++ b/lib/database/checkVersion @@ -1,18 +1,18 @@ #!/bin/bash -currentdbversion=1 +currentdbversion=2 checkDatabaseVersion() { local dbversion - if dbversion=$(Select atom version <<<"1 = 1") + if dbversion=$(Select atom version <<<"\"1\" = 1") then if (( dbversion == currentdbversion )) then return 0 - elif (( dbversion < currentversion )) + elif (( dbversion < currentdbversion )) then - until (( dbversion == currentversion )) + until (( dbversion == currentdbversion )) do upgradedatabase_${dbversion}_$((dbversion+1)) - dbversion=$(Select atom version <<<"1 = 1") + dbversion=$(Select atom version <<<"\"1\" = 1") done else echo "Database schema version $dbversion is higher than @@ -23,4 +23,5 @@ checkDatabaseVersion() { else Insert atom 1 <<<"version $currentdbversion" fi + exit } diff --git a/lib/database/upgradedatabase_1_2 b/lib/database/upgradedatabase_1_2 new file mode 100644 index 0000000..888cd64 --- /dev/null +++ b/lib/database/upgradedatabase_1_2 @@ -0,0 +1,37 @@ +#!/bin/bash + +upgradedatabase_1_2() { + echo "Upgrading database to version 2... (backup is $database.bak_v1)" + cp "$database" "$database.bak_v1" + echo 'ALTER TABLE destination_files ADD COLUMN fat32compat INTEGER;' >&3 + echo 'ALTER TABLE destination_files ADD COLUMN ascii INTEGER;' >&3 + echo ' +SELECT id, + rename_pattern +FROM destination_files; + +SELECT "AtOM::NoMoreData";' >&3 + + read -u4 data + while [[ $data != AtOM::NoMoreData ]] + do + datas+=( "$data" ) + read -u4 data + done + echo 'BEGIN TRANSACTION;' >&3 + for data in "${datas[@]}" + do + id="${data%%::AtOM:SQL:Sep::*}" + rename_pattern="${data#*::AtOM:SQL:Sep::}" + IFS=':' + read pattern fat32 <<<"$rename_pattern" + IFS="$oldIFS" + Update destination_files \ + rename_pattern "$pattern" \ + fat32compat "$fat32" \ + ascii 0 \ + <<<"id = $id" + done + echo 'COMMIT;' >&3 + Update atom version 2 <<<"1 = 1" +} diff --git a/lib/tools/ascii b/lib/tools/ascii new file mode 100644 index 0000000..74b7b65 --- /dev/null +++ b/lib/tools/ascii @@ -0,0 +1,14 @@ +#!/bin/bash + +ascii() { + coproc toascii { + perl -e ' + use utf8; + use Text::Unidecode; + use open qw(:std :utf8); + $| = 1; + while (<>) { + print(unidecode($_)); + }' + } +} diff --git a/share/schema.sql b/share/schema.sql index d8f6888..2e4f3c6 100644 --- a/share/schema.sql +++ b/share/schema.sql @@ -22,6 +22,8 @@ CREATE TABLE IF NOT EXISTS destination_files ( filename TEXT, old_filename TEXT, rename_pattern TEXT, + fat32compat INTEGER, + ascii INTEGER, last_change FLOAT NOT NULL DEFAULT 0, source_file_id INTEGER, destination_id INTEGER,