Skip to content

Commit aee935d

Browse files
committed
drop LockService legacy
1 parent f793675 commit aee935d

File tree

11 files changed

+76
-58
lines changed

11 files changed

+76
-58
lines changed

.phpstorm.meta.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use Bavix\Wallet\Internal\Assembler\TransferLazyDtoAssemblerInterface;
88
use Bavix\Wallet\Internal\Repository\TransactionRepositoryInterface;
99
use Bavix\Wallet\Internal\Repository\TransferRepositoryInterface;
10+
use Bavix\Wallet\Services\AtomicKeyService;
11+
use Bavix\Wallet\Services\AtomicKeyServiceInterface;
1012
use Bavix\Wallet\Services\CastServiceInterface;
1113
use Bavix\Wallet\Internal\Service\JsonServiceInterface;
1214
use Bavix\Wallet\Services\DiscountServiceInterface;
@@ -32,7 +34,6 @@
3234
use Bavix\Wallet\Internal\Service\UuidServiceInterface;
3335
use Bavix\Wallet\Objects\Cart;
3436
use Bavix\Wallet\Services\CommonServiceLegacy;
35-
use Bavix\Wallet\Services\LockServiceLegacy;
3637
use Bavix\Wallet\Services\MetaServiceLegacy;
3738
use Bavix\Wallet\Services\TaxServiceInterface;
3839
use Bavix\Wallet\Services\WalletServiceLegacy;
@@ -71,6 +72,7 @@
7172
// services
7273
AssistantServiceInterface::class => AssistantServiceInterface::class,
7374
AtmServiceInterface::class => AtmServiceInterface::class,
75+
AtomicKeyServiceInterface::class => AtomicKeyServiceInterface::class,
7476
BasketServiceInterface::class => BasketServiceInterface::class,
7577
BookkeeperServiceInterface::class => BookkeeperServiceInterface::class,
7678
CastServiceInterface::class => CastServiceInterface::class,
@@ -83,7 +85,6 @@
8385

8486
// lagacy.services
8587
CommonServiceLegacy::class => CommonServiceLegacy::class,
86-
LockServiceLegacy::class => LockServiceLegacy::class,
8788
MetaServiceLegacy::class => MetaServiceLegacy::class,
8889
WalletServiceLegacy::class => WalletServiceLegacy::class,
8990
]));

config/config.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Bavix\Wallet\Models\Wallet;
2323
use Bavix\Wallet\Services\AssistantService;
2424
use Bavix\Wallet\Services\AtmService;
25+
use Bavix\Wallet\Services\AtomicKeyService;
2526
use Bavix\Wallet\Services\BasketService;
2627
use Bavix\Wallet\Services\BookkeeperService;
2728
use Bavix\Wallet\Services\CastService;
@@ -72,6 +73,7 @@
7273
'services' => [
7374
'assistant' => AssistantService::class,
7475
'atm' => AtmService::class,
76+
'key' => AtomicKeyService::class,
7577
'basket' => BasketService::class,
7678
'bookkeeper' => BookkeeperService::class,
7779
'cast' => CastService::class,

src/Services/AtomicKeyService.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Bavix\Wallet\Services;
6+
7+
final class AtomicKeyService implements AtomicKeyServiceInterface
8+
{
9+
private const PREFIX = 'wallet_atomic::';
10+
11+
private CastServiceInterface $castService;
12+
13+
public function __construct(CastServiceInterface $castService)
14+
{
15+
$this->castService = $castService;
16+
}
17+
18+
public function getIdentifier(object $object): string
19+
{
20+
$model = $this->castService->getModel($object);
21+
22+
return self::PREFIX.'::'.get_class($model).'::'.$model->getKey();
23+
}
24+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Bavix\Wallet\Services;
6+
7+
interface AtomicKeyServiceInterface
8+
{
9+
public function getIdentifier(object $object): string;
10+
}

src/Services/LockServiceLegacy.php

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/Services/WalletServiceLegacy.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,27 @@
44

55
namespace Bavix\Wallet\Services;
66

7+
use Bavix\Wallet\Internal\Service\LockServiceInterface;
78
use Bavix\Wallet\Internal\Service\MathServiceInterface;
89
use Bavix\Wallet\Models\Wallet as WalletModel;
910

1011
final class WalletServiceLegacy
1112
{
1213
private MathServiceInterface $math;
13-
private LockServiceLegacy $lockService;
14+
private LockServiceInterface $lockService;
1415
private BookkeeperServiceInterface $bookkeeper;
16+
private AtomicKeyServiceInterface $atomicKeyService;
1517

1618
public function __construct(
1719
MathServiceInterface $math,
18-
LockServiceLegacy $lockService,
19-
BookkeeperServiceInterface $bookkeeper
20+
LockServiceInterface $lockService,
21+
BookkeeperServiceInterface $bookkeeper,
22+
AtomicKeyServiceInterface $atomicKeyService
2023
) {
2124
$this->math = $math;
2225
$this->lockService = $lockService;
2326
$this->bookkeeper = $bookkeeper;
27+
$this->atomicKeyService = $atomicKeyService;
2428
}
2529

2630
/**
@@ -29,7 +33,7 @@ public function __construct(
2933
*/
3034
public function refresh(WalletModel $wallet): bool
3135
{
32-
return $this->lockService->lock($wallet, function () use ($wallet) {
36+
return $this->lockService->block($this->atomicKeyService->getIdentifier($wallet), function () use ($wallet) {
3337
$whatIs = $wallet->balance;
3438
$balance = $wallet->getAvailableBalance();
3539
if ($this->math->compare($whatIs, $balance) === 0) {

src/Traits/CanConfirm.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111
use Bavix\Wallet\Exceptions\WalletOwnerInvalid;
1212
use Bavix\Wallet\Internal\Exceptions\ExceptionInterface;
1313
use Bavix\Wallet\Internal\Service\DatabaseServiceInterface;
14+
use Bavix\Wallet\Internal\Service\LockServiceInterface;
1415
use Bavix\Wallet\Internal\Service\MathServiceInterface;
1516
use Bavix\Wallet\Internal\Service\TranslatorServiceInterface;
1617
use Bavix\Wallet\Models\Transaction;
18+
use Bavix\Wallet\Services\AtomicKeyServiceInterface;
1719
use Bavix\Wallet\Services\CastServiceInterface;
1820
use Bavix\Wallet\Services\CommonServiceLegacy;
1921
use Bavix\Wallet\Services\ConsistencyServiceInterface;
20-
use Bavix\Wallet\Services\LockServiceLegacy;
2122

2223
trait CanConfirm
2324
{
@@ -58,7 +59,11 @@ public function safeConfirm(Transaction $transaction): bool
5859
*/
5960
public function resetConfirm(Transaction $transaction): bool
6061
{
61-
return app(LockServiceLegacy::class)->lock($this, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($transaction) {
62+
$atomicKey = app(AtomicKeyServiceInterface::class)
63+
->getIdentifier($this)
64+
;
65+
66+
return app(LockServiceInterface::class)->block($atomicKey, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($transaction) {
6267
if (!$transaction->confirmed) {
6368
throw new UnconfirmedInvalid(
6469
app(TranslatorServiceInterface::class)->get('wallet::errors.unconfirmed_invalid'),
@@ -93,7 +98,11 @@ public function safeResetConfirm(Transaction $transaction): bool
9398
*/
9499
public function forceConfirm(Transaction $transaction): bool
95100
{
96-
return app(LockServiceLegacy::class)->lock($this, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($transaction) {
101+
$atomicKey = app(AtomicKeyServiceInterface::class)
102+
->getIdentifier($this)
103+
;
104+
105+
return app(LockServiceInterface::class)->block($atomicKey, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($transaction) {
97106
if ($transaction->confirmed) {
98107
throw new ConfirmedInvalid(
99108
app(TranslatorServiceInterface::class)->get('wallet::errors.confirmed_invalid'),

src/Traits/CanExchange.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
use Bavix\Wallet\Internal\Assembler\TransferLazyDtoAssemblerInterface;
99
use Bavix\Wallet\Internal\Exceptions\ExceptionInterface;
1010
use Bavix\Wallet\Internal\Service\DatabaseServiceInterface;
11+
use Bavix\Wallet\Internal\Service\LockServiceInterface;
1112
use Bavix\Wallet\Internal\Service\MathServiceInterface;
1213
use Bavix\Wallet\Models\Transfer;
14+
use Bavix\Wallet\Services\AtomicKeyServiceInterface;
1315
use Bavix\Wallet\Services\CastServiceInterface;
1416
use Bavix\Wallet\Services\CommonServiceLegacy;
1517
use Bavix\Wallet\Services\ConsistencyServiceInterface;
1618
use Bavix\Wallet\Services\ExchangeServiceInterface;
17-
use Bavix\Wallet\Services\LockServiceLegacy;
1819
use Bavix\Wallet\Services\PrepareServiceInterface;
1920
use Bavix\Wallet\Services\TaxServiceInterface;
2021

@@ -49,7 +50,11 @@ public function safeExchange(Wallet $to, $amount, ?array $meta = null): ?Transfe
4950
*/
5051
public function forceExchange(Wallet $to, $amount, ?array $meta = null): Transfer
5152
{
52-
return app(LockServiceLegacy::class)->lock($this, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($to, $amount, $meta) {
53+
$atomicKey = app(AtomicKeyServiceInterface::class)
54+
->getIdentifier($this)
55+
;
56+
57+
return app(LockServiceInterface::class)->block($atomicKey, fn () => app(DatabaseServiceInterface::class)->transaction(function () use ($to, $amount, $meta) {
5358
$prepareService = app(PrepareServiceInterface::class);
5459
$mathService = app(MathServiceInterface::class);
5560
$castService = app(CastServiceInterface::class);

src/Traits/HasGift.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414
use Bavix\Wallet\Internal\Assembler\TransferDtoAssemblerInterface;
1515
use Bavix\Wallet\Internal\Exceptions\ExceptionInterface;
1616
use Bavix\Wallet\Internal\Service\DatabaseServiceInterface;
17+
use Bavix\Wallet\Internal\Service\LockServiceInterface;
1718
use Bavix\Wallet\Internal\Service\MathServiceInterface;
1819
use Bavix\Wallet\Models\Transaction;
1920
use Bavix\Wallet\Models\Transfer;
2021
use Bavix\Wallet\Services\AtmServiceInterface;
22+
use Bavix\Wallet\Services\AtomicKeyServiceInterface;
2123
use Bavix\Wallet\Services\CastServiceInterface;
2224
use Bavix\Wallet\Services\CommonServiceLegacy;
2325
use Bavix\Wallet\Services\ConsistencyServiceInterface;
2426
use Bavix\Wallet\Services\DiscountServiceInterface;
25-
use Bavix\Wallet\Services\LockServiceLegacy;
2627
use Bavix\Wallet\Services\TaxServiceInterface;
2728
use Throwable;
2829

@@ -55,7 +56,11 @@ public function safeGift(Wallet $to, Product $product, bool $force = false): ?Tr
5556
*/
5657
public function gift(Wallet $to, Product $product, bool $force = false): Transfer
5758
{
58-
return app(LockServiceLegacy::class)->lock($this, function () use ($to, $product, $force): Transfer {
59+
$atomicKey = app(AtomicKeyServiceInterface::class)
60+
->getIdentifier($this)
61+
;
62+
63+
return app(LockServiceInterface::class)->block($atomicKey, function () use ($to, $product, $force): Transfer {
5964
/**
6065
* Who's giving? Let's call him Santa Claus.
6166
*

src/WalletServiceProvider.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
use Bavix\Wallet\Services\AssistantServiceInterface;
4242
use Bavix\Wallet\Services\AtmService;
4343
use Bavix\Wallet\Services\AtmServiceInterface;
44+
use Bavix\Wallet\Services\AtomicKeyService;
45+
use Bavix\Wallet\Services\AtomicKeyServiceInterface;
4446
use Bavix\Wallet\Services\BasketService;
4547
use Bavix\Wallet\Services\BasketServiceInterface;
4648
use Bavix\Wallet\Services\BookkeeperService;
@@ -54,7 +56,6 @@
5456
use Bavix\Wallet\Services\DiscountServiceInterface;
5557
use Bavix\Wallet\Services\ExchangeService;
5658
use Bavix\Wallet\Services\ExchangeServiceInterface;
57-
use Bavix\Wallet\Services\LockServiceLegacy;
5859
use Bavix\Wallet\Services\MetaServiceLegacy;
5960
use Bavix\Wallet\Services\PrepareService;
6061
use Bavix\Wallet\Services\PrepareServiceInterface;
@@ -160,6 +161,7 @@ private function services(array $configure): void
160161
{
161162
$this->app->singleton(AssistantServiceInterface::class, $configure['assistant'] ?? AssistantService::class);
162163
$this->app->singleton(AtmServiceInterface::class, $configure['atm'] ?? AtmService::class);
164+
$this->app->singleton(AtomicKeyServiceInterface::class, $configure['key'] ?? AtomicKeyService::class);
163165
$this->app->singleton(BasketServiceInterface::class, $configure['basket'] ?? BasketService::class);
164166
$this->app->singleton(BookkeeperServiceInterface::class, $configure['bookkeeper'] ?? BookkeeperService::class);
165167
$this->app->singleton(CastServiceInterface::class, $configure['cast'] ?? CastService::class);
@@ -211,8 +213,6 @@ private function legacySingleton(): void
211213
{
212214
$this->app->singleton(CommonServiceLegacy::class);
213215
$this->app->singleton(WalletServiceLegacy::class);
214-
215-
$this->app->singleton(LockServiceLegacy::class);
216216
$this->app->singleton(MetaServiceLegacy::class);
217217
}
218218

0 commit comments

Comments
 (0)