psychedelicious
4049217728
feat(db): back up database before running migrations
...
Just in case.
2024-04-02 09:10:53 +11:00
psychedelicious
f76b04a3b8
fix(db): rename "SQLiteMigrator" -> "SqliteMigrator"
2023-12-13 11:31:15 +11:00
psychedelicious
ed1583383e
fix(db): remove stale comment in tests
2023-12-13 11:24:27 +11:00
psychedelicious
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
psychedelicious@windows
95198da645
fix(db): fix sqlite migrator tests on windows
2023-12-12 13:54:47 +11:00
psychedelicious
50815d36c6
feat(db): add tests for migration dependencies
2023-12-12 13:09:24 +11:00
psychedelicious
0cf7fe43af
feat(db): refactor migrate callbacks to use dependencies, remote pre/post callbacks
2023-12-12 12:35:42 +11:00
psychedelicious
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
psychedelicious
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
psychedelicious
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
psychedelicious
55acc16b2d
feat(db): require migration versions to be consecutive
2023-12-12 09:43:09 +11:00
psychedelicious
ef8284f009
fix(db): fix tests
2023-12-11 16:41:47 +11:00
psychedelicious
fa7d002175
fix(tests): fix typing issues
2023-12-11 16:22:29 +11:00
psychedelicious@windows
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
psychedelicious
77065b1ce1
feat(db): update test for migration chain for missing from 0
2023-12-11 16:14:25 +11:00
psychedelicious
c823f5667b
feat(db): update sqlite migrator tests
2023-12-11 16:14:25 +11:00
psychedelicious
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
psychedelicious@windows
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
psychedelicious
3c692018cd
fix(db): make idempotency test actually test something
2023-12-11 16:14:25 +11:00
psychedelicious
3ba3c1918c
fix(db): remove duplicated test case
2023-12-11 16:14:25 +11:00
psychedelicious
f2c6819d68
feat(db): add SQLiteMigrator to perform db migrations
2023-12-11 16:14:25 +11:00