From 75d4dac812185f205cd459fb7b1eddb3776e1271 Mon Sep 17 00:00:00 2001 From: totoro Date: Wed, 1 Apr 2020 10:06:03 +0900 Subject: [PATCH] during db migration the database schema version is now get from database itself --- database/migration_sqlite3.anubis | 12 ++++++------ database/settings_sqlite3.anubis | 54 +++++++++++++++++++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/database/migration_sqlite3.anubis b/database/migration_sqlite3.anubis index 8beee07..df12b31 100644 --- a/database/migration_sqlite3.anubis +++ b/database/migration_sqlite3.anubis @@ -213,13 +213,13 @@ define Maybe(One) SQLite3DataBase db, (LogLevel, String) -> One logger, Migration _migration, - (DB_Version) -> One update_db_version + (SQLite3DataBase , DB_Version) -> One update_db_version )= since _migration is migration(mig_version, _, create_tables, create_indexes), if create_tables(db, logger) is success(_) then if create_indexes(db, logger) is success(_) then - update_db_version(mig_version); + update_db_version(db, mig_version); success(unique) else failure @@ -235,7 +235,7 @@ define Maybe(One) // String current_version, //current version of app DB_Version db_ver, //version found in db settings List(Migration) migrations, - (DB_Version) -> One update_db_version, + (SQLite3DataBase , DB_Version) -> One update_db_version ) = if migrations is { @@ -250,7 +250,7 @@ define Maybe(One) if migrate_to(db, logger) is failure then failure else - update_db_version(migration_version); + update_db_version(db, migration_version); do_migration_loop(db, logger, migration_version, t, update_db_version) more then @@ -266,7 +266,7 @@ define Maybe(One) if migrate_to(db, logger) is failure then failure else - update_db_version(migration_version); + update_db_version(db, migration_version); do_migration_loop(db, logger, migration_version, t, update_db_version) } }. @@ -277,7 +277,7 @@ public define Maybe(One) SQLite3DataBase db, (LogLevel, String) -> One logger, DB_Version current_db_version, - (DB_Version) -> One update_db_version, + (SQLite3DataBase , DB_Version) -> One update_db_version, List(Migration) all_migrations, )= if is_empty_database(db) then // new empty database diff --git a/database/settings_sqlite3.anubis b/database/settings_sqlite3.anubis index 943edcf..ca8fd97 100644 --- a/database/settings_sqlite3.anubis +++ b/database/settings_sqlite3.anubis @@ -17,9 +17,9 @@ public define Maybe(String) select_settings ( SQLite3DataBase db, - String var, + String name, )= - if sql_query_timeout(db, "SELECT var_value FROM settings WHERE var_name=" + db_make_sql_string(var) + ";", [], "select_settings") is + if sql_query_timeout(db, "SELECT value FROM settings WHERE name = :name;", [bind_String(":name",name)], "select_settings") is { error(_) then failure, //error in the SQL request ok(_, cursor, _) then @@ -90,29 +90,29 @@ public define One update_settings ( SQLite3DataBase db, - String var, + String name, Bool value )= - with bool_str = if value is true then "true" else "false", - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_String(":value", bool_str)], - if select_settings(db, var) is success(_) then - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings")) + //with bool_str = if value is true then "true" else "false", + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_Bool(":value", value)], + if select_settings(db, name) is success(_) then + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings")) else - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings")) + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings")) . public define One update_settings ( SQLite3DataBase db, - String var, + String name, Int value )= - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_Int(":value", value)], - if select_settings(db, var) is success(_) then - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings")) + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_Int(":value", value)], + if select_settings(db, name) is success(_) then + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings")) else - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings")) + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings")) . @@ -120,13 +120,29 @@ public define One update_settings ( SQLite3DataBase db, - String var, + String name, String value )= - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_String(":value", value)], - if select_settings(db, var) is success(_) then - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings")) + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_String(":value", value)], + if select_settings(db, name) is success(_) then + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings")) else - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings")) + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings")) . - + + +public define Bool + create_settings_table + ( + SQLite3DataBase db + )= + if sql_query_timeout(db, "CREATE TABLE IF NOT EXISTS settings ( + id INTEGER PRIMARY KEY, + name TEXT UNIQUE, + value TEXT + );", [], "create_settings_table") is + { + error(_) then false, //error in the SQL request + ok(_, _, _) then true + } +. -- libgit2 0.21.4