Commit fabdcf5dc6c78cdd8209e576b2b417ad85436f5b
1 parent
9d77faa8
allow to process migration on non created database.
move the version of the database into inifile
Showing
1 changed file
with
69 additions
and
0 deletions
Show diff stats
database/migration_sqlite3.anubis
| @@ -164,6 +164,7 @@ define Maybe(One) | @@ -164,6 +164,7 @@ define Maybe(One) | ||
| 164 | do_migration_loop(db, logger, current_version, db_ver, t, success(h), update_db_version), | 164 | do_migration_loop(db, logger, current_version, db_ver, t, success(h), update_db_version), |
| 165 | }. | 165 | }. |
| 166 | 166 | ||
| 167 | + | ||
| 167 | /* SQLite 3 version */ | 168 | /* SQLite 3 version */ |
| 168 | public define Maybe(One) | 169 | public define Maybe(One) |
| 169 | do_migration | 170 | do_migration |
| @@ -188,6 +189,74 @@ public define Maybe(One) | @@ -188,6 +189,74 @@ public define Maybe(One) | ||
| 188 | else | 189 | else |
| 189 | do_migration_loop(db, logger, current_version, db_version, all_migrations, failure, update_db_version) | 190 | do_migration_loop(db, logger, current_version, db_version, all_migrations, failure, update_db_version) |
| 190 | ). | 191 | ). |
| 192 | + | ||
| 193 | +/* SQLite 3 version hk_settings*/ | ||
| 194 | + | ||
| 195 | +define Maybe(One) | ||
| 196 | + do_migration_loop | ||
| 197 | + ( | ||
| 198 | + SQLite3DataBase db, | ||
| 199 | + Logger logger, | ||
| 200 | + String current_version, //current version of app | ||
| 201 | + String db_ver, //version found in db settings | ||
| 202 | + List(Migration) migrations, | ||
| 203 | + Maybe(Migration) need_to_create_table, // success in case of new DB or when no migration have been done | ||
| 204 | + (String) -> One update_db_version, | ||
| 205 | + ) = | ||
| 206 | + if migrations is | ||
| 207 | + { | ||
| 208 | + [] then | ||
| 209 | + if need_to_create_table is | ||
| 210 | + { | ||
| 211 | + failure then | ||
| 212 | + update_db_version(current_version); | ||
| 213 | + success(unique), | ||
| 214 | + success(last) then | ||
| 215 | + if last is migration(_, _, create_tables, create_indexes) then | ||
| 216 | + if create_tables(db, logger) is success(_) then | ||
| 217 | + if create_indexes(db, logger) is success(_) then | ||
| 218 | + update_db_version(current_version); | ||
| 219 | + success(unique) | ||
| 220 | + else | ||
| 221 | + failure | ||
| 222 | + else | ||
| 223 | + failure | ||
| 224 | + }, | ||
| 225 | + [h . t] then | ||
| 226 | + if h is migration(version, migrate_to, _, _) then | ||
| 227 | + if compare_db_version(db_ver, version) < 0 then | ||
| 228 | + logInfo(logger, "Migrating Database from version " + db_ver + " to version " + version); | ||
| 229 | + if migrate_to(db, logger) is failure then | ||
| 230 | + failure | ||
| 231 | + else | ||
| 232 | + do_migration_loop(db, logger, current_version, version, t, failure, update_db_version) | ||
| 233 | + else | ||
| 234 | + do_migration_loop(db, logger, current_version, db_ver, t, success(h), update_db_version), | ||
| 235 | + }. | ||
| 236 | + | ||
| 237 | +public define Maybe(One) | ||
| 238 | + do_migration | ||
| 239 | + ( | ||
| 240 | + SQLite3DataBase db, | ||
| 241 | + Logger logger, | ||
| 242 | + String current_version, | ||
| 243 | + String get_db_version, | ||
| 244 | + (String) -> One update_db_version, | ||
| 245 | + List(Migration) all_migrations, | ||
| 246 | + )= | ||
| 247 | + if is_empty_database(db) then // new empty database | ||
| 248 | + logInfo(logger, "No database found. Creating a new one..."); | ||
| 249 | + do_migration_loop(db, logger, current_version, "", [], last(all_migrations), update_db_version) | ||
| 250 | + else | ||
| 251 | + ( | ||
| 252 | + with db_version = get_db_version, | ||
| 253 | + //if app version is same as db_version, there is nothing to migrate | ||
| 254 | + if compare_db_version(db_version, current_version) = 0 then | ||
| 255 | + logInfo(logger, "Database version "+db_version+". No database migration found."); | ||
| 256 | + success(unique) | ||
| 257 | + else | ||
| 258 | + do_migration_loop(db, logger, current_version, db_version, all_migrations, failure, update_db_version) | ||
| 259 | + ). | ||
| 191 | 260 | ||
| 192 | public define Maybe(One) | 261 | public define Maybe(One) |
| 193 | do_create_indexes | 262 | do_create_indexes |