feat(tasks): add option to disable PRAGMA statements in migrations (#508)

This commit is contained in:
Corentin Thomasset
2025-09-21 00:07:34 +02:00
committed by GitHub
parent 1abbf18e94
commit 782f70ff66
5 changed files with 36 additions and 13 deletions

View File

@@ -0,0 +1,5 @@
---
"@papra/app-server": patch
---
Added an option to disable PRAGMA statements from sqlite task service migrations

View File

@@ -42,7 +42,7 @@
"@aws-sdk/lib-storage": "^3.835.0",
"@azure/storage-blob": "^12.27.0",
"@cadence-mq/core": "^0.2.1",
"@cadence-mq/driver-libsql": "^0.2.1",
"@cadence-mq/driver-libsql": "^0.2.4",
"@cadence-mq/driver-memory": "^0.2.0",
"@corentinth/chisels": "^1.3.1",
"@corentinth/friendly-ids": "^0.0.1",

View File

@@ -1,9 +1,13 @@
import type { TaskPersistenceConfig, TaskServiceDriverDefinition } from '../../tasks.types';
import { createLibSqlDriver, setupSchema } from '@cadence-mq/driver-libsql';
import { safely } from '@corentinth/chisels';
import { createClient } from '@libsql/client';
import { createLogger } from '../../../shared/logger/logger';
const logger = createLogger({ namespace: 'tasks-driver:libsql' });
export function createLibSqlTaskServiceDriver({ taskPersistenceConfig }: { taskPersistenceConfig: TaskPersistenceConfig }): TaskServiceDriverDefinition {
const { url, authToken, pollIntervalMs } = taskPersistenceConfig.drivers.libSql;
const { url, authToken, pollIntervalMs, migrateWithPragma } = taskPersistenceConfig.drivers.libSql;
const client = createClient({ url, authToken });
const driver = createLibSqlDriver({ client, pollIntervalMs });
@@ -11,7 +15,15 @@ export function createLibSqlTaskServiceDriver({ taskPersistenceConfig }: { taskP
return {
driver,
initialize: async () => {
await setupSchema({ client });
logger.debug('Initializing LibSQL task service driver');
const [, error] = await safely(setupSchema({ client, withPragma: migrateWithPragma }));
if (error) {
logger.error({ error }, 'Failed to set up LibSQL task service schema');
throw error;
}
logger.info('LibSQL task service driver initialized');
},
};
}

View File

@@ -26,6 +26,12 @@ export const tasksConfig = {
default: undefined,
env: 'TASKS_PERSISTENCE_DRIVERS_LIBSQL_AUTH_TOKEN',
},
migrateWithPragma: {
doc: 'Whether to include the PRAGMA statements when setting up the LibSQL database schema.',
schema: booleanishSchema,
default: true,
env: 'TASKS_PERSISTENCE_DRIVERS_LIBSQL_MIGRATE_WITH_PRAGMA',
},
pollIntervalMs: {
doc: 'The interval at which the task persistence driver polls for new tasks',
schema: z.coerce.number().int().positive(),

20
pnpm-lock.yaml generated
View File

@@ -254,8 +254,8 @@ importers:
specifier: ^0.2.1
version: 0.2.1
'@cadence-mq/driver-libsql':
specifier: ^0.2.1
version: 0.2.1(@cadence-mq/core@0.2.1)(@libsql/client@0.14.0)
specifier: ^0.2.4
version: 0.2.4(@cadence-mq/core@0.2.1)(@libsql/client@0.14.0)
'@cadence-mq/driver-memory':
specifier: ^0.2.0
version: 0.2.0(@cadence-mq/core@0.2.1)
@@ -1076,10 +1076,10 @@ packages:
'@cadence-mq/core@0.2.1':
resolution: {integrity: sha512-Cu/jqR7mNhMZ1U4Boiudy2nePyf4PtqBUFGhUcsCQPJfymKcrDm4xjp8A/2tKZr5JSgkN/7L0/+mHZ27GVSryQ==}
'@cadence-mq/driver-libsql@0.2.1':
resolution: {integrity: sha512-tQPmMNLLVEhvT2HdY/rHk+Cl0Yj4JFMQnoYnBYIw30kTIpKGCQWnBTf5oSmIlmc6wdIHYan+f+waVhWmkObD1w==}
'@cadence-mq/driver-libsql@0.2.4':
resolution: {integrity: sha512-JXsajpPXJRQolYiPzYI5rpQyTjH1g7AZMh3KYnHHs8nieLekYhU885iRPCu80RXQsYN2CJa08Vj5hgQhGP9rjw==}
peerDependencies:
'@cadence-mq/core': ^0.2.0
'@cadence-mq/core': ^0.2.3
'@libsql/client': ^0.15.9
'@cadence-mq/driver-memory@0.2.0':
@@ -4654,8 +4654,8 @@ packages:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
detect-libc@2.0.4:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
detect-libc@2.1.0:
resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==}
engines: {node: '>=8'}
deterministic-object-hash@2.0.2:
@@ -9515,7 +9515,7 @@ snapshots:
'@standard-schema/spec': 1.0.0
cron-parser: 5.3.0
'@cadence-mq/driver-libsql@0.2.1(@cadence-mq/core@0.2.1)(@libsql/client@0.14.0)':
'@cadence-mq/driver-libsql@0.2.4(@cadence-mq/core@0.2.1)(@libsql/client@0.14.0)':
dependencies:
'@cadence-mq/core': 0.2.1
'@libsql/client': 0.14.0
@@ -10752,7 +10752,7 @@ snapshots:
'@mapbox/node-pre-gyp@1.0.11':
dependencies:
detect-libc: 2.0.4
detect-libc: 2.1.0
https-proxy-agent: 5.0.1
make-dir: 3.1.0
node-fetch: 2.7.0
@@ -13308,7 +13308,7 @@ snapshots:
detect-libc@2.0.3: {}
detect-libc@2.0.4:
detect-libc@2.1.0:
optional: true
deterministic-object-hash@2.0.2: