Commit 75d4dac812185f205cd459fb7b1eddb3776e1271

Authored by David RENÉ
1 parent d0c372c0

during db migration the database schema version is now get from database itself

database/migration_sqlite3.anubis
... ... @@ -213,13 +213,13 @@ define Maybe(One)
213 213 SQLite3DataBase db,
214 214 (LogLevel, String) -> One logger,
215 215 Migration _migration,
216   - (DB_Version) -> One update_db_version
  216 + (SQLite3DataBase , DB_Version) -> One update_db_version
217 217 )=
218 218 since _migration is migration(mig_version, _, create_tables, create_indexes),
219 219  
220 220 if create_tables(db, logger) is success(_) then
221 221 if create_indexes(db, logger) is success(_) then
222   - update_db_version(mig_version);
  222 + update_db_version(db, mig_version);
223 223 success(unique)
224 224 else
225 225 failure
... ... @@ -235,7 +235,7 @@ define Maybe(One)
235 235 // String current_version, //current version of app
236 236 DB_Version db_ver, //version found in db settings
237 237 List(Migration) migrations,
238   - (DB_Version) -> One update_db_version,
  238 + (SQLite3DataBase , DB_Version) -> One update_db_version
239 239 ) =
240 240 if migrations is
241 241 {
... ... @@ -250,7 +250,7 @@ define Maybe(One)
250 250 if migrate_to(db, logger) is failure then
251 251 failure
252 252 else
253   - update_db_version(migration_version);
  253 + update_db_version(db, migration_version);
254 254 do_migration_loop(db, logger, migration_version, t, update_db_version)
255 255  
256 256 more then
... ... @@ -266,7 +266,7 @@ define Maybe(One)
266 266 if migrate_to(db, logger) is failure then
267 267 failure
268 268 else
269   - update_db_version(migration_version);
  269 + update_db_version(db, migration_version);
270 270 do_migration_loop(db, logger, migration_version, t, update_db_version)
271 271 }
272 272 }.
... ... @@ -277,7 +277,7 @@ public define Maybe(One)
277 277 SQLite3DataBase db,
278 278 (LogLevel, String) -> One logger,
279 279 DB_Version current_db_version,
280   - (DB_Version) -> One update_db_version,
  280 + (SQLite3DataBase , DB_Version) -> One update_db_version,
281 281 List(Migration) all_migrations,
282 282 )=
283 283 if is_empty_database(db) then // new empty database
... ...
database/settings_sqlite3.anubis
... ... @@ -17,9 +17,9 @@ public define Maybe(String)
17 17 select_settings
18 18 (
19 19 SQLite3DataBase db,
20   - String var,
  20 + String name,
21 21 )=
22   - if sql_query_timeout(db, "SELECT var_value FROM settings WHERE var_name=" + db_make_sql_string(var) + ";", [], "select_settings") is
  22 + if sql_query_timeout(db, "SELECT value FROM settings WHERE name = :name;", [bind_String(":name",name)], "select_settings") is
23 23 {
24 24 error(_) then failure, //error in the SQL request
25 25 ok(_, cursor, _) then
... ... @@ -90,29 +90,29 @@ public define One
90 90 update_settings
91 91 (
92 92 SQLite3DataBase db,
93   - String var,
  93 + String name,
94 94 Bool value
95 95 )=
96   - with bool_str = if value is true then "true" else "false",
97   - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_String(":value", bool_str)],
98   - if select_settings(db, var) is success(_) then
99   - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings"))
  96 + //with bool_str = if value is true then "true" else "false",
  97 + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_Bool(":value", value)],
  98 + if select_settings(db, name) is success(_) then
  99 + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings"))
100 100 else
101   - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings"))
  101 + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings"))
102 102 .
103 103  
104 104 public define One
105 105 update_settings
106 106 (
107 107 SQLite3DataBase db,
108   - String var,
  108 + String name,
109 109 Int value
110 110 )=
111   - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_Int(":value", value)],
112   - if select_settings(db, var) is success(_) then
113   - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings"))
  111 + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_Int(":value", value)],
  112 + if select_settings(db, name) is success(_) then
  113 + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings"))
114 114 else
115   - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings"))
  115 + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings"))
116 116 .
117 117  
118 118  
... ... @@ -120,13 +120,29 @@ public define One
120 120 update_settings
121 121 (
122 122 SQLite3DataBase db,
123   - String var,
  123 + String name,
124 124 String value
125 125 )=
126   - with binds = (List(SQLite3Bind))[bind_String(":name", var), bind_String(":value", value)],
127   - if select_settings(db, var) is success(_) then
128   - forget(sql_query_timeout(db, "UPDATE settings SET var_value = :value WHERE var_name = :name;", binds, "update_settings"))
  126 + with binds = (List(SQLite3Bind))[bind_String(":name", name), bind_String(":value", value)],
  127 + if select_settings(db, name) is success(_) then
  128 + forget(sql_query_timeout(db, "UPDATE settings SET value = :value WHERE name = :name;", binds, "update_settings"))
129 129 else
130   - forget(sql_query_timeout(db, "INSERT INTO settings (var_name, var_value) VALUES (:name, :value)", binds, "update_settings"))
  130 + forget(sql_query_timeout(db, "INSERT INTO settings (name, value) VALUES (:name, :value)", binds, "update_settings"))
131 131 .
132   -
  132 +
  133 +
  134 +public define Bool
  135 + create_settings_table
  136 + (
  137 + SQLite3DataBase db
  138 + )=
  139 + if sql_query_timeout(db, "CREATE TABLE IF NOT EXISTS settings (
  140 + id INTEGER PRIMARY KEY,
  141 + name TEXT UNIQUE,
  142 + value TEXT
  143 + );", [], "create_settings_table") is
  144 + {
  145 + error(_) then false, //error in the SQL request
  146 + ok(_, _, _) then true
  147 + }
  148 +.
... ...