1111
1212declare (strict_types=1 );
1313
14- namespace Cog \DbLocker \Locker ;
14+ namespace Cog \DbLocker \Postgres ;
1515
16- use Cog \DbLocker \LockId \PostgresLockId ;
16+ use Cog \DbLocker \Postgres \Enum \PostgresLockAccessModeEnum ;
17+ use Cog \DbLocker \Postgres \Enum \PostgresLockLevelEnum ;
18+ use Cog \DbLocker \Postgres \Enum \PostgresLockWaitModeEnum ;
19+ use Cog \DbLocker \Postgres \LockHandle \PostgresSessionLevelLockHandle ;
20+ use Cog \DbLocker \Postgres \LockHandle \PostgresTransactionLevelLockHandle ;
1721use LogicException ;
1822use PDO ;
1923
@@ -27,14 +31,14 @@ final class PostgresAdvisoryLocker
2731 public function acquireTransactionLevelLockHandler (
2832 PDO $ dbConnection ,
2933 PostgresLockId $ postgresLockId ,
30- PostgresAdvisoryLockWaitModeEnum $ waitMode = PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
34+ PostgresLockWaitModeEnum $ waitMode = PostgresLockWaitModeEnum ::NonBlocking,
3135 PostgresLockAccessModeEnum $ accessMode = PostgresLockAccessModeEnum::Exclusive,
32- ): AdvisoryLockTransactionLevel {
33- return new AdvisoryLockTransactionLevel (
36+ ): PostgresTransactionLevelLockHandle {
37+ return new PostgresTransactionLevelLockHandle (
3438 wasAcquired: $ this ->acquireLock (
3539 $ dbConnection ,
3640 $ postgresLockId ,
37- PostgresAdvisoryLockLevelEnum ::Transaction,
41+ PostgresLockLevelEnum ::Transaction,
3842 $ waitMode ,
3943 $ accessMode ,
4044 ),
@@ -47,13 +51,13 @@ public function acquireTransactionLevelLockHandler(
4751 public function acquireTransactionLevelLock (
4852 PDO $ dbConnection ,
4953 PostgresLockId $ postgresLockId ,
50- PostgresAdvisoryLockWaitModeEnum $ waitMode = PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
54+ PostgresLockWaitModeEnum $ waitMode = PostgresLockWaitModeEnum ::NonBlocking,
5155 PostgresLockAccessModeEnum $ accessMode = PostgresLockAccessModeEnum::Exclusive,
5256 ): bool {
5357 return $ this ->acquireLock (
5458 $ dbConnection ,
5559 $ postgresLockId ,
56- PostgresAdvisoryLockLevelEnum ::Transaction,
60+ PostgresLockLevelEnum ::Transaction,
5761 $ waitMode ,
5862 $ accessMode ,
5963 );
@@ -68,18 +72,18 @@ public function acquireTransactionLevelLock(
6872 public function acquireSessionLevelLockHandler (
6973 PDO $ dbConnection ,
7074 PostgresLockId $ postgresLockId ,
71- PostgresAdvisoryLockWaitModeEnum $ waitMode = PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
75+ PostgresLockWaitModeEnum $ waitMode = PostgresLockWaitModeEnum ::NonBlocking,
7276 PostgresLockAccessModeEnum $ accessMode = PostgresLockAccessModeEnum::Exclusive,
73- ): AdvisoryLockSessionLevel {
74- return new AdvisoryLockSessionLevel (
77+ ): PostgresSessionLevelLockHandle {
78+ return new PostgresSessionLevelLockHandle (
7579 $ dbConnection ,
7680 $ this ,
7781 $ postgresLockId ,
7882 $ accessMode ,
7983 wasAcquired: $ this ->acquireLock (
8084 $ dbConnection ,
8185 $ postgresLockId ,
82- PostgresAdvisoryLockLevelEnum ::Session,
86+ PostgresLockLevelEnum ::Session,
8387 $ waitMode ,
8488 $ accessMode ,
8589 ),
@@ -94,13 +98,13 @@ public function acquireSessionLevelLockHandler(
9498 public function acquireSessionLevelLock (
9599 PDO $ dbConnection ,
96100 PostgresLockId $ postgresLockId ,
97- PostgresAdvisoryLockWaitModeEnum $ waitMode = PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
101+ PostgresLockWaitModeEnum $ waitMode = PostgresLockWaitModeEnum ::NonBlocking,
98102 PostgresLockAccessModeEnum $ accessMode = PostgresLockAccessModeEnum::Exclusive,
99103 ): bool {
100104 return $ this ->acquireLock (
101105 $ dbConnection ,
102106 $ postgresLockId ,
103- PostgresAdvisoryLockLevelEnum ::Session,
107+ PostgresLockLevelEnum ::Session,
104108 $ waitMode ,
105109 $ accessMode ,
106110 );
@@ -148,55 +152,55 @@ public function releaseAllSessionLevelLocks(
148152 private function acquireLock (
149153 PDO $ dbConnection ,
150154 PostgresLockId $ postgresLockId ,
151- PostgresAdvisoryLockLevelEnum $ level ,
152- PostgresAdvisoryLockWaitModeEnum $ waitMode = PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
155+ PostgresLockLevelEnum $ level ,
156+ PostgresLockWaitModeEnum $ waitMode = PostgresLockWaitModeEnum ::NonBlocking,
153157 PostgresLockAccessModeEnum $ accessMode = PostgresLockAccessModeEnum::Exclusive,
154158 ): bool {
155- if ($ level === PostgresAdvisoryLockLevelEnum ::Transaction && $ dbConnection ->inTransaction () === false ) {
159+ if ($ level === PostgresLockLevelEnum ::Transaction && $ dbConnection ->inTransaction () === false ) {
156160 throw new LogicException (
157161 "Transaction-level advisory lock ` $ postgresLockId ->humanReadableValue ` cannot be acquired outside of transaction " ,
158162 );
159163 }
160164
161165 $ sql = match ([$ level , $ waitMode , $ accessMode ]) {
162166 [
163- PostgresAdvisoryLockLevelEnum ::Transaction,
164- PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
167+ PostgresLockLevelEnum ::Transaction,
168+ PostgresLockWaitModeEnum ::NonBlocking,
165169 PostgresLockAccessModeEnum::Exclusive,
166170 ] => 'SELECT PG_TRY_ADVISORY_XACT_LOCK(:class_id, :object_id); ' ,
167171 [
168- PostgresAdvisoryLockLevelEnum ::Transaction,
169- PostgresAdvisoryLockWaitModeEnum ::Blocking,
172+ PostgresLockLevelEnum ::Transaction,
173+ PostgresLockWaitModeEnum ::Blocking,
170174 PostgresLockAccessModeEnum::Exclusive,
171175 ] => 'SELECT PG_ADVISORY_XACT_LOCK(:class_id, :object_id); ' ,
172176 [
173- PostgresAdvisoryLockLevelEnum ::Transaction,
174- PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
177+ PostgresLockLevelEnum ::Transaction,
178+ PostgresLockWaitModeEnum ::NonBlocking,
175179 PostgresLockAccessModeEnum::Share,
176180 ] => 'SELECT PG_TRY_ADVISORY_XACT_LOCK_SHARED(:class_id, :object_id); ' ,
177181 [
178- PostgresAdvisoryLockLevelEnum ::Transaction,
179- PostgresAdvisoryLockWaitModeEnum ::Blocking,
182+ PostgresLockLevelEnum ::Transaction,
183+ PostgresLockWaitModeEnum ::Blocking,
180184 PostgresLockAccessModeEnum::Share,
181185 ] => 'SELECT PG_ADVISORY_XACT_LOCK_SHARED(:class_id, :object_id); ' ,
182186 [
183- PostgresAdvisoryLockLevelEnum ::Session,
184- PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
187+ PostgresLockLevelEnum ::Session,
188+ PostgresLockWaitModeEnum ::NonBlocking,
185189 PostgresLockAccessModeEnum::Exclusive,
186190 ] => 'SELECT PG_TRY_ADVISORY_LOCK(:class_id, :object_id); ' ,
187191 [
188- PostgresAdvisoryLockLevelEnum ::Session,
189- PostgresAdvisoryLockWaitModeEnum ::Blocking,
192+ PostgresLockLevelEnum ::Session,
193+ PostgresLockWaitModeEnum ::Blocking,
190194 PostgresLockAccessModeEnum::Exclusive,
191195 ] => 'SELECT PG_ADVISORY_LOCK(:class_id, :object_id); ' ,
192196 [
193- PostgresAdvisoryLockLevelEnum ::Session,
194- PostgresAdvisoryLockWaitModeEnum ::NonBlocking,
197+ PostgresLockLevelEnum ::Session,
198+ PostgresLockWaitModeEnum ::NonBlocking,
195199 PostgresLockAccessModeEnum::Share,
196200 ] => 'SELECT PG_TRY_ADVISORY_LOCK_SHARED(:class_id, :object_id); ' ,
197201 [
198- PostgresAdvisoryLockLevelEnum ::Session,
199- PostgresAdvisoryLockWaitModeEnum ::Blocking,
202+ PostgresLockLevelEnum ::Session,
203+ PostgresLockWaitModeEnum ::Blocking,
200204 PostgresLockAccessModeEnum::Share,
201205 ] => 'SELECT PG_ADVISORY_LOCK_SHARED(:class_id, :object_id); ' ,
202206 };
0 commit comments