f76b04a3b8
fix(db): rename "SQLiteMigrator" -> "SqliteMigrator"
2023-12-13 11:31:15 +11:00
ed1583383e
fix(db): remove stale comment in tests
2023-12-13 11:24:27 +11:00
ebf5f5d418
feat(db): address feedback, cleanup
...
- use simpler pattern for migration dependencies
- move SqliteDatabase & migration to utility method `init_db`, use this in both the app and tests, ensuring the same db schema is used in both
2023-12-13 11:19:59 +11:00
95198da645
fix(db): fix sqlite migrator tests on windows
2023-12-12 13:54:47 +11:00
50815d36c6
feat(db): add tests for migration dependencies
2023-12-12 13:09:24 +11:00
0cf7fe43af
feat(db): refactor migrate callbacks to use dependencies, remote pre/post callbacks
2023-12-12 12:35:42 +11:00
c5ba4f2ea5
feat(db): remove file backups
...
Instead of mucking about with the filesystem, we rely on SQLite transactions to handle failed migrations.
2023-12-12 11:12:46 +11:00
3414437eea
feat(db): instantiate SqliteMigrator with a SqliteDatabase
...
Simplifies a couple things:
- Init is more straightforward
- It's clear in the migrator that the connection we are working with is related to the SqliteDatabase
2023-12-12 10:46:08 +11:00
afe4e55bf9
feat(db): simplify migration registration validation
...
With the previous change to assert that the to_version == from_version + 1, this validation can be simpler.
2023-12-12 09:52:03 +11:00
55acc16b2d
feat(db): require migration versions to be consecutive
2023-12-12 09:43:09 +11:00
ef8284f009
fix(db): fix tests
2023-12-11 16:41:47 +11:00
fa7d002175
fix(tests): fix typing issues
2023-12-11 16:22:29 +11:00
f1b6f78319
fix(db): fix windows db migrator tests
...
- Ensure db files are closed before manipulating them
- Use contextlib.closing() so that sqlite connections are closed on existing the context
2023-12-11 16:14:25 +11:00
77065b1ce1
feat(db): update test for migration chain for missing from 0
2023-12-11 16:14:25 +11:00
c823f5667b
feat(db): update sqlite migrator tests
2023-12-11 16:14:25 +11:00
e461f9925e
feat(db): invert backup/restore logic
...
Do the migration on a temp copy of the db, then back up the original and move the temp into its file.
2023-12-11 16:14:25 +11:00
abc9dc4d17
fix(tests): fix sqlite migrator backup and restore test
...
On Windows, we must ensure the connection to the database is closed before exiting the tempfile context.
Also, rejiggered the thing to use the file directly.
2023-12-11 16:14:25 +11:00
3c692018cd
fix(db): make idempotency test actually test something
2023-12-11 16:14:25 +11:00
3ba3c1918c
fix(db): remove duplicated test case
2023-12-11 16:14:25 +11:00
f2c6819d68
feat(db): add SQLiteMigrator to perform db migrations
2023-12-11 16:14:25 +11:00