Skip to content

Commit 64e5617

Browse files
committed
wip
1 parent efeda67 commit 64e5617

File tree

5 files changed

+40
-16
lines changed

5 files changed

+40
-16
lines changed

packages/database/src/Casters/IdCaster.php

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
use Tempest\Database\Id;
88
use Tempest\Mapper\Caster;
9-
use Tempest\Mapper\Exceptions\ValueCouldNotBeSerialized;
109

1110
final readonly class IdCaster implements Caster
1211
{
@@ -18,13 +17,4 @@ public function cast(mixed $input): Id
1817

1918
return new Id($input);
2019
}
21-
22-
public function serialize(mixed $input): string
23-
{
24-
if (! ($input instanceof Id)) {
25-
throw new ValueCouldNotBeSerialized(Id::class);
26-
}
27-
28-
return (string) $input->id;
29-
}
3020
}

packages/database/src/DatabaseInitializer.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use Tempest\Container\DynamicInitializer;
99
use Tempest\Container\Singleton;
1010
use Tempest\Database\Config\DatabaseConfig;
11-
use Tempest\Database\Config\DatabaseDialect;
1211
use Tempest\Database\Connection\Connection;
1312
use Tempest\Database\Connection\PDOConnection;
1413
use Tempest\Database\Transactions\GenericTransactionManager;

packages/database/src/GenericDatabase.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,6 @@ private function resolveBindings(Query $query): array
124124
$bindings = [];
125125

126126
foreach ($query->bindings as $key => $value) {
127-
// TODO: make serializer
128-
if ($value instanceof Id) {
129-
$value = $value->id;
130-
}
131-
132127
if ($value instanceof Query) {
133128
$value = $value->execute();
134129
} elseif ($serializer = $this->serializerFactory->forValue($value)) {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace Tempest\Database\Serializers;
4+
5+
use Tempest\Database\Id;
6+
use Tempest\Mapper\Exceptions\ValueCouldNotBeSerialized;
7+
use Tempest\Mapper\Serializer;
8+
9+
final class IdSerializer implements Serializer
10+
{
11+
public function serialize(mixed $input): array|string
12+
{
13+
if (! ($input instanceof Id)) {
14+
throw new ValueCouldNotBeSerialized(Id::class);
15+
}
16+
17+
return $input->id;
18+
}
19+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Tempest\Database\Serializers;
4+
5+
use Tempest\Core\KernelEvent;
6+
use Tempest\Database\Id;
7+
use Tempest\EventBus\EventHandler;
8+
use Tempest\Mapper\SerializerFactory;
9+
10+
final readonly class IdSerializerProvider
11+
{
12+
public function __construct(
13+
private SerializerFactory $serializerFactory,
14+
) {}
15+
16+
#[EventHandler(KernelEvent::BOOTED)]
17+
public function __invoke(KernelEvent $_event): void
18+
{
19+
$this->serializerFactory->addSerializer(Id::class, IdSerializer::class);
20+
}
21+
}

0 commit comments

Comments
 (0)