Skip to content

Commit c1fe7bb

Browse files
committed
feat: add ODM support
1 parent cc27467 commit c1fe7bb

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

tests/Behat/DoctrineContext.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
use ApiPlatform\Tests\Fixtures\TestBundle\Document\SoMany as SoManyDocument;
8888
use ApiPlatform\Tests\Fixtures\TestBundle\Document\Taxon as TaxonDocument;
8989
use ApiPlatform\Tests\Fixtures\TestBundle\Document\ThirdLevel as ThirdLevelDocument;
90+
use ApiPlatform\Tests\Fixtures\TestBundle\Document\UidBasedId as UidBasedIdDocument;
9091
use ApiPlatform\Tests\Fixtures\TestBundle\Document\UrlEncodedId as UrlEncodedIdDocument;
9192
use ApiPlatform\Tests\Fixtures\TestBundle\Document\User as UserDocument;
9293
use ApiPlatform\Tests\Fixtures\TestBundle\Document\VideoGame as VideoGameDocument;
@@ -1376,7 +1377,7 @@ public function thereIsAUrlEncodedIdResource(): void
13761377
*/
13771378
public function thereIsAUidBasedIdResource(string $id): void
13781379
{
1379-
$uidBasedIdResource = ($this->isOrm() ? new UidBasedId(Ulid::fromBase32($id)) : throw new \RuntimeException('TODO'));
1380+
$uidBasedIdResource = ($this->isOrm() ? new UidBasedId(Ulid::fromBase32($id)) : new UidBasedIdDocument(Ulid::fromBase32($id)));
13801381
$this->manager->persist($uidBasedIdResource);
13811382
$this->manager->flush();
13821383
$this->manager->clear();
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the API Platform project.
5+
*
6+
* (c) Kévin Dunglas <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace ApiPlatform\Tests\Fixtures\TestBundle\Document;
15+
16+
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
17+
use ApiPlatform\Metadata\ApiFilter;
18+
use ApiPlatform\Metadata\ApiResource;
19+
use ApiPlatform\Metadata\Get;
20+
use ApiPlatform\Metadata\GetCollection;
21+
use ApiPlatform\Metadata\Post;
22+
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
23+
use Symfony\Component\Uid\Ulid;
24+
25+
/**
26+
* @author Beno!t POLASZEK <[email protected]>
27+
*
28+
* Resource with an Uid-based ID
29+
*/
30+
#[ApiResource(operations: [new Get(), new Post(), new GetCollection()])]
31+
#[ApiFilter(SearchFilter::class, properties: ['id' => 'exact'])]
32+
#[ODM\Document]
33+
class UidBasedId
34+
{
35+
#[ODM\Id(strategy: 'none')]
36+
public Ulid $id;
37+
38+
public function __construct(?Ulid $id)
39+
{
40+
$this->id = $id ?? new Ulid();
41+
}
42+
}

0 commit comments

Comments
 (0)