Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/store/src/Document/VectorDocument.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,19 @@
*/
final class VectorDocument
{
public readonly int|string|Uuid $id;

public function __construct(
public readonly Uuid $id,
int|string|Uuid $id,
public readonly VectorInterface $vector,
public readonly Metadata $metadata = new Metadata(),
public readonly ?float $score = null,
) {
if (\is_string($id) && Uuid::isValid($id)) {
$this->id = Uuid::fromString($id);
} else {
$this->id = $id;
}
}

/**
Expand Down
24 changes: 24 additions & 0 deletions src/store/tests/Document/VectorDocumentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use PHPUnit\Framework\Attributes\TestDox;
use PHPUnit\Framework\Attributes\TestWith;
use PHPUnit\Framework\TestCase;
use Symfony\AI\Platform\Vector\NullVector;
use Symfony\AI\Platform\Vector\Vector;
use Symfony\AI\Store\Document\Metadata;
use Symfony\AI\Store\Document\VectorDocument;
Expand All @@ -25,6 +26,29 @@
*/
final class VectorDocumentTest extends TestCase
{
#[TestWith([1])]
#[TestWith(['id'])]
#[TestWith(['uuid'])]
public function testConstructorIdSupportsManyTypes(int|string $id)
{
if ('uuid' === $id) {
$id = Uuid::v4();
}

$document = new VectorDocument($id, new NullVector());

$this->assertSame($id, $document->id);
}

#[TestDox('Automatically convert strings in UUID format to Uuid instances')]
public function testConstructorConvertIdToUuid()
{
$id = Uuid::v4()->toString();
$document = new VectorDocument($id, new NullVector());

$this->assertInstanceOf(Uuid::class, $document->id);
}

#[TestDox('Creates document with required parameters only')]
public function testConstructorWithRequiredParameters()
{
Expand Down