Skip to content

Commit

Permalink
WIP - rework repo & object api concept
Browse files Browse the repository at this point in the history
  • Loading branch information
TMBL-DEV committed Dec 18, 2023
1 parent 198e8ae commit 0163778
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/FileMakerDataApi.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
use Psr\SimpleCache\InvalidArgumentException;
use Flooris\FileMakerDataApi\Api\Authentication;
use Flooris\FileMakerDataApi\HttpClient\Connector;
use Flooris\FileMakerDataApi\RecordRepository\FmBaseRepository;
use Flooris\FileMakerDataApi\RecordRepository\FmObject;
use Flooris\FileMakerDataApi\RecordRepository\FmObjectRepository;
use Illuminate\Contracts\Cache\Repository as CacheRepositoryInterface;

class FileMakerDataApi
Expand All @@ -36,6 +39,11 @@ public function __construct(
}
}

public function repo(FmObject $fmObject)
{
return new FmObjectRepository($this, $fmObject);
}

public function record($layout = null): Record
{
return new Record($this, $layout);
Expand Down
2 changes: 2 additions & 0 deletions src/RecordRepository/FmBaseObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,6 @@ public function getPortalArray(string $fieldName): array

return $this->portalData->{$fieldName};
}

public abstract function getDataArray(): array;
}
18 changes: 18 additions & 0 deletions src/RecordRepository/FmObject.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Flooris\FileMakerDataApi\RecordRepository;

abstract class FmObject
{
public function __construct(
public readonly string $layout,
public readonly string $idField,
public readonly string $fmBaseObjectClass,
) {
}

public function item(object $result): FmBaseObject
{
return new $this->fmBaseObjectClass($result);
}
}
32 changes: 32 additions & 0 deletions src/RecordRepository/FmObjectRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace Flooris\FileMakerDataApi\RecordRepository;

use Flooris\FileMakerDataApi\FileMakerDataApi;

class FmObjectRepository
{
private $result = null;

public function __construct(
private readonly FileMakerDataApi $fmClient,
public readonly FmObject $fmObject,
) {
}

public function find(int $id)
{
return $this->findMany([$this->fmObject->idField => "={$id}"])->first();
}

public function findMany(array $findQuery, int $offset = 1, int $limit = 100, array $sort = [])
{
$this->result = $this->fmClient->record($this->fmObject->layout)->findRecords($findQuery, $offset, $limit, $sort);

if (! isset($this->result->data)) {
return collect();
}

return collect($this->result->data)->map(fn (object $dataItem) => $this->fmObject->item($dataItem)->getDataArray());
}
}

0 comments on commit 0163778

Please sign in to comment.