import { Pool } from 'pg'; import type { JobRepository, JobRepositoryOptions, RemoveJobsOptions, JobParameters, JobId, JobsQueryOptions, JobsResult, JobsOverview } from 'agenda'; import type { PostgresBackendConfig } from './types.js'; /** * PostgreSQL implementation of JobRepository */ export declare class PostgresJobRepository implements JobRepository { private config; private pool; private ownPool; private tableName; private ensureSchema; private sort; private disconnected; constructor(config: PostgresBackendConfig); private createPool; /** * Get the underlying pool (for use by notification channel) */ getPool(): Pool; connect(): Promise; private createSchema; disconnect(): Promise; /** * Force close the pool - should only be called on application shutdown * or when you're sure the backend won't be reused */ close(): Promise; /** * Convert PostgreSQL row to JobParameters */ private rowToJob; /** * Convert SortDirection to SQL ASC/DESC */ private toSqlDirection; /** * Convert sort options to PostgreSQL ORDER BY clause */ private toOrderByClause; getJobById(id: string): Promise; queryJobs(options?: JobsQueryOptions): Promise; getJobsOverview(): Promise; getDistinctJobNames(): Promise; getQueueSize(): Promise; removeJobs(options: RemoveJobsOptions): Promise; /** * Build PostgreSQL filter conditions from RemoveJobsOptions */ private buildFilterFromOptions; disableJobs(options: RemoveJobsOptions): Promise; enableJobs(options: RemoveJobsOptions): Promise; purgeAllJobs(): Promise; unlockJob(job: JobParameters): Promise; unlockJobs(jobIds: (JobId | string)[]): Promise; lockJob(job: JobParameters, options: JobRepositoryOptions | undefined): Promise; getNextJobToRun(jobName: string, nextScanAt: Date, lockDeadline: Date, now: Date | undefined, options: JobRepositoryOptions | undefined): Promise; saveJobState(job: JobParameters, options: JobRepositoryOptions | undefined): Promise; saveJob(job: JobParameters, options: JobRepositoryOptions | undefined): Promise>; }