Type Alias IDatabaseSemaphoreAdapter

IDatabaseSemaphoreAdapter: {
    removeAllSlots(
        context: IReadableContext,
        key: string,
    ): Promise<ISemaphoreSlotExpirationData[]>;
    removeSlot(
        context: IReadableContext,
        key: string,
        slotId: string,
    ): Promise<null | ISemaphoreSlotExpirationData>;
    transaction<TValue>(
        context: IReadableContext,
        fn: InvokableFn<
            [transaction: IDatabaseSemaphoreTransaction],
            Promise<TValue>,
        >,
    ): Promise<TValue>;
    updateExpiration(
        context: IReadableContext,
        key: string,
        slotId: string,
        expiration: Date,
    ): Promise<number>;
}

Database adapter contract for managing semaphores in SQL/document databases. Simplifies semaphore implementation using transactional CRUD patterns.

Designed for persistent semaphores stored in databases like:

  • SQL databases (PostgreSQL, MySQL) with TypeORM or MikroORM
  • Document databases with transaction support
  • Any backend with atomic transaction capability

IMPORT_PATH: "@daiso-tech/core/semaphore/contracts"

Type declaration