feat: Use postgres as a queue

We've been keen to try this for a while as it means we can remove redis as a
dependency, which makes Immich easier to setup and run.

This replaces bullmq with a bespoke postgres queue. Jobs in the queue are
processed either immediately via triggers and notifications, or eventually if a
notification is missed.
This commit is contained in:
Thomas Way 2025-04-30 22:42:18 +01:00
parent b845184c80
commit d46e5f2436
No known key found for this signature in database
GPG key ID: F98E7FF1F9F8C217
47 changed files with 751 additions and 933 deletions
mobile/openapi/lib/model

View file

@ -26,7 +26,7 @@ class JobCommand {
static const start = JobCommand._(r'start');
static const pause = JobCommand._(r'pause');
static const resume = JobCommand._(r'resume');
static const empty = JobCommand._(r'empty');
static const clear = JobCommand._(r'clear');
static const clearFailed = JobCommand._(r'clear-failed');
/// List of all possible values in this [enum][JobCommand].
@ -34,7 +34,7 @@ class JobCommand {
start,
pause,
resume,
empty,
clear,
clearFailed,
];
@ -77,7 +77,7 @@ class JobCommandTypeTransformer {
case r'start': return JobCommand.start;
case r'pause': return JobCommand.pause;
case r'resume': return JobCommand.resume;
case r'empty': return JobCommand.empty;
case r'clear': return JobCommand.clear;
case r'clear-failed': return JobCommand.clearFailed;
default:
if (!allowNull) {