2026-03-05 08:26:51 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MintyPHP\Repository\Support;
|
|
|
|
|
|
2026-03-13 21:58:51 +01:00
|
|
|
/** Contract for database-level session control: advisory locks and transaction management. */
|
2026-03-05 08:26:51 +01:00
|
|
|
interface DatabaseSessionRepositoryInterface
|
|
|
|
|
{
|
|
|
|
|
public function acquireAdvisoryLock(string $lockName, int $timeoutSeconds = 0): bool;
|
|
|
|
|
|
|
|
|
|
public function releaseAdvisoryLock(string $lockName): void;
|
|
|
|
|
|
|
|
|
|
public function beginTransaction(): void;
|
|
|
|
|
|
|
|
|
|
public function commitTransaction(): void;
|
|
|
|
|
|
|
|
|
|
public function rollbackTransaction(): void;
|
2026-03-13 21:58:51 +01:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @template T
|
|
|
|
|
* @param callable(): T $callback
|
|
|
|
|
* @return T
|
|
|
|
|
*/
|
|
|
|
|
public function transaction(callable $callback): mixed;
|
2026-03-05 08:26:51 +01:00
|
|
|
}
|