Type Alias IDatabaseSharedLockAdapter

IDatabaseSharedLockAdapter: {
    transaction<TReturn>(
        context: IReadableContext,
        fn: InvokableFn<
            [transaction: IDatabaseSharedLockTransaction],
            Promise<TReturn>,
        >,
    ): Promise<TReturn>;
}

Database adapter contract for implementing shared (reader-writer) locks in SQL/document databases. Simplifies shared lock implementation using transactional CRUD patterns.

Shared locks implement the reader-writer pattern:

  • Readers (shared): Multiple concurrent readers allowed (semaphore-based)
  • Writers (exclusive): Only one writer at a time, blocks all readers

Designed for persistent shared locks stored in databases like:

  • SQL databases (PostgreSQL, MySQL) with TypeORM or MikroORM
  • Document databases with transaction support

Key design:

  • All operations run within a single transaction for atomicity
  • Uses strict transaction isolation to prevent race conditions
  • Reader count managed via semaphore slots
  • Writer managed via exclusive lock ownership

IMPORT_PATH: "@daiso-tech/core/shared-lock/contracts"

Type declaration