File tree Expand file tree Collapse file tree 5 files changed +40
-16
lines changed
Expand file tree Collapse file tree 5 files changed +40
-16
lines changed Original file line number Diff line number Diff line change 66
77use Tempest \Database \Id ;
88use Tempest \Mapper \Caster ;
9- use Tempest \Mapper \Exceptions \ValueCouldNotBeSerialized ;
109
1110final 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}
Original file line number Diff line number Diff line change 88use Tempest \Container \DynamicInitializer ;
99use Tempest \Container \Singleton ;
1010use Tempest \Database \Config \DatabaseConfig ;
11- use Tempest \Database \Config \DatabaseDialect ;
1211use Tempest \Database \Connection \Connection ;
1312use Tempest \Database \Connection \PDOConnection ;
1413use Tempest \Database \Transactions \GenericTransactionManager ;
Original file line number Diff line number Diff 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 )) {
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments