mirror of
https://github.com/danog/AsyncOrm.git
synced 2024-11-26 12:24:59 +01:00
Feat: support of custom serializers
This commit is contained in:
parent
c820a4023a
commit
fe29289045
@ -18,6 +18,7 @@ namespace danog\AsyncOrm\Annotations;
|
||||
|
||||
use Attribute;
|
||||
use danog\AsyncOrm\KeyType;
|
||||
use danog\AsyncOrm\Serializer;
|
||||
use danog\AsyncOrm\ValueType;
|
||||
|
||||
/**
|
||||
@ -54,7 +55,11 @@ final class OrmMappedArray
|
||||
/**
|
||||
* Table name postfix, if null defaults to the property name.
|
||||
*/
|
||||
public readonly ?string $tablePostfix = null
|
||||
public readonly ?string $tablePostfix = null,
|
||||
/**
|
||||
* Provide custom serializer for table.
|
||||
*/
|
||||
public readonly ?Serializer $serializer = null,
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
@ -78,6 +78,13 @@ trait DbAutoProperties
|
||||
['cacheTtl' => $ttl]
|
||||
));
|
||||
}
|
||||
$serializer = $attr->serializer ?? $settings->serializer;
|
||||
if ($serializer !== $settings->serializer) {
|
||||
$settings = new $settings(...\array_merge(
|
||||
(array) $settings,
|
||||
['serializer' => $serializer]
|
||||
));
|
||||
}
|
||||
if ($settings instanceof MysqlSettings) {
|
||||
$optimize = $attr->optimizeIfWastedMb ?? $settings->optimizeIfWastedMb;
|
||||
|
||||
|
@ -433,8 +433,10 @@ final class OrmTest extends TestCase
|
||||
|
||||
$obj->arr[12345] = 54321;
|
||||
$obj->arr2[123456] = 654321;
|
||||
$obj->arr5[123] = "7734";
|
||||
$this->assertSame(54321, $obj->arr[12345]);
|
||||
$this->assertSame(654321, $obj->arr2[123456]);
|
||||
$this->assertSame("7734", $obj->arr5[123]);
|
||||
$this->assertCount(1, $obj->arr);
|
||||
$this->assertCount(1, $obj->arr2);
|
||||
|
||||
|
@ -29,6 +29,7 @@ use danog\AsyncOrm\DbArrayBuilder;
|
||||
use danog\AsyncOrm\DbAutoProperties;
|
||||
use danog\AsyncOrm\DbObject;
|
||||
use danog\AsyncOrm\KeyType;
|
||||
use danog\AsyncOrm\Serializer\Json;
|
||||
use danog\AsyncOrm\ValueType;
|
||||
|
||||
final class TestObject extends DbObject
|
||||
@ -67,6 +68,14 @@ final class TestObject extends DbObject
|
||||
)]
|
||||
public DbArray $arr4;
|
||||
|
||||
#[OrmMappedArray(
|
||||
keyType: KeyType::INT,
|
||||
valueType: ValueType::SCALAR,
|
||||
cacheTtl: 0,
|
||||
serializer: new Json(),
|
||||
)]
|
||||
public DbArray $arr5;
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return ['savedProp', 'arr', 'arr2', 'arr3', 'arr4'];
|
||||
|
Loading…
Reference in New Issue
Block a user