psychedelicious
b6ed4ba559
feat(db): handle PIL errors opening images gracefully
...
For example, if PIL tries to open a *really* big image, it will raise an exception to prevent reading a huge object into memory.
2023-12-18 18:02:31 +11:00
Lincoln Stein
60e3e653fa
Merge branch 'main' into feat/model_manager/search-by-format
2023-12-14 23:53:54 -05:00
psychedelicious
461e474394
fix(nodes): fix embedded workflows with IDs
...
This model was a bit too strict, and raised validation errors when workflows we expect to *not* have an ID (eg, an embedded workflow) have one.
Now it strips unknown attributes, allowing those workflows to load.
2023-12-14 11:38:04 +11:00
psychedelicious
f0c70fe3f1
fix(db): add error handling for workflow migration
...
- Handle an image file not existing despite being in the database.
- Add a simple pydantic model that tests only for the existence of a workflow's version.
- Check against this new model when migrating workflows, skipping if the workflow fails validation. If it succeeds, the frontend should be able to handle the workflow.
2023-12-14 10:16:56 +11:00
Lincoln Stein
569ae7c482
add ability to filter model listings by format
2023-12-13 15:59:21 -05:00
psychedelicious
f76b04a3b8
fix(db): rename "SQLiteMigrator" -> "SqliteMigrator"
2023-12-13 11:31:15 +11:00
psychedelicious
cc18d86f29
Merge branch 'main' into feat/db/migrations
2023-12-13 11:24:55 +11:00
psychedelicious
c50a49719b
fix(db): raise a MigrationVersionError when invalid versions are used
...
This inherits from `ValueError`, so pydantic understands it when doing validation.
2023-12-13 11:21:16 +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
d7cede6c28
chore/fix: bump fastapi to 0.105.0
...
This fixes a problem with `Annotated` which prevented us from using pydantic's `Field` to specify a discriminator for a union. We had to use FastAPI's `Body` as a workaround.
2023-12-13 09:48:34 +11:00
psychedelicious
2cdda1fda2
Merge remote-tracking branch 'origin/main' into feat/db/migrations
2023-12-12 17:22:52 +11:00
psychedelicious
5f77ef7e99
feat(db): improve docstrings in migrator
2023-12-12 16:30:57 +11:00
Lincoln Stein
d277bd3c38
Merge branch 'main' into feat/enhance-model-db-migrate-script
2023-12-12 00:24:43 -05:00
Kevin Turner
fd4e041e7c
feat: serve HTTPS when configured with ssl_certfile
2023-12-12 16:01:43 +11:00
Lincoln Stein
b0cfa58526
allow the model record migrate script to update existing model records
2023-12-11 22:47:19 -05:00
psychedelicious
18ba7feca1
feat(db): update docstrings
2023-12-12 13:35:46 +11:00
psychedelicious
55b0c7cdc9
feat(db): tidy migration_2
2023-12-12 13:30:29 +11:00
psychedelicious
a69f518c76
feat(db): tidy dependencies for migrations
2023-12-12 13:09:09 +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
6063760ce2
feat(db): tweak docstring
2023-12-12 11:13:40 +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
417db71471
feat(db): decouple SqliteDatabase from config object
...
- Simplify init args to path (None means use memory), logger, and verbose
- Add docstrings to SqliteDatabase (it had almost none)
- Update all usages of the class
2023-12-12 10:30:37 +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
290851016e
feat(db): move sqlite_migrator into its own module
2023-12-11 16:41:30 +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
4f3c32a2ee
fix(db): remove errant print stmts
2023-12-11 16:14:25 +11:00
psychedelicious
41db92b9e8
feat(db): add check for missing migration from 0
2023-12-11 16:14:25 +11:00
psychedelicious
3227b30430
feat(db): extract non-stateful logic to class methods
2023-12-11 16:14:25 +11:00
psychedelicious
567f107a81
feat(db): return backup_db_path, move log stmt to run_migrations
2023-12-11 16:14:25 +11:00
psychedelicious
b3d5955bc7
fix(db): rename Migrator._migrations -> _migration_set
2023-12-11 16:14:25 +11:00
psychedelicious
8726b203d4
fix(db): fix migration chain validation
2023-12-11 16:14:25 +11:00
psychedelicious
b3f92e0547
fix(db): fix docstring
2023-12-11 16:14:25 +11:00
psychedelicious
72c9a7663f
fix(db): add docstring
2023-12-11 16:14:25 +11:00
psychedelicious
fcb9e89bd7
feat(db): tidy db naming utils
2023-12-11 16:14:25 +11:00
psychedelicious
56966d6d05
feat(db): only reinit db if migrations occurred
2023-12-11 16:14:25 +11:00
psychedelicious
e46dc9b34e
fix(db): close db conn before reinitializing
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
abeb1bd3b3
feat(db): reduce power MigrateCallback, only gets cursor
...
use partial to provide extra dependencies for the image workflow migration function
2023-12-11 16:14:25 +11:00
psychedelicious
83e820d721
feat(db): decouple from SqliteDatabase
2023-12-11 16:14:25 +11:00
psychedelicious
f8e4b93a74
feat(db): add migration lock file
2023-12-11 16:14:25 +11:00
psychedelicious
0710ec30cf
feat(db): incorporate feedback
2023-12-11 16:14:25 +11:00
psychedelicious
c382329e8c
feat(db): move migrator out of SqliteDatabase
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
Lincoln Stein
3b1ff4a7f4
resolve test failure caused by renamed sqlite_database module
2023-12-10 12:59:00 -05:00
Lincoln Stein
d7f7fbc8c2
Merge branch 'main' into refactor/model-manager-3
2023-12-10 12:55:28 -05:00
Lincoln Stein
2f3457c02a
rename installer __del__() to stop(). Improve probe error messages
2023-12-10 12:55:01 -05:00
psychedelicious
7436aa8e3a
feat(workflow_records): do not use default_factory for workflow id
...
Using default_factory to autogenerate UUIDs doesn't make sense here, and results awkward typescript types.
Remove the default factory and instead manually create a UUID for workflow id. There are only two places where this needs to happen so it's not a big change.
2023-12-09 11:10:16 +11:00