Skip to content

Commit 9aa68e1

Browse files
committed
WIP
1 parent 2c3cf9b commit 9aa68e1

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

src/Attributes/LodataOperation.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function __construct(?string $name = null, ?string $bind = null, ?string
2323
$this->name = $name;
2424
$this->bind = $bind;
2525
if ($return) {
26-
$this->return = Lodata::getEntityType($return);
26+
$this->return = Lodata::getComplexType($return);
2727
}
2828
}
2929

src/ComplexValue.php

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,30 @@
55
namespace Flat3\Lodata;
66

77
use ArrayAccess;
8+
use Flat3\Lodata\Controller\Response;
89
use Flat3\Lodata\Controller\Transaction;
910
use Flat3\Lodata\Exception\Protocol\BadRequestException;
1011
use Flat3\Lodata\Facades\Lodata;
1112
use Flat3\Lodata\Helper\ETag;
1213
use Flat3\Lodata\Helper\PropertyValue;
1314
use Flat3\Lodata\Helper\PropertyValues;
15+
use Flat3\Lodata\Interfaces\ContextInterface;
1416
use Flat3\Lodata\Interfaces\JsonInterface;
17+
use Flat3\Lodata\Interfaces\PipeInterface;
1518
use Flat3\Lodata\Interfaces\ReferenceInterface;
19+
use Flat3\Lodata\Interfaces\ResourceInterface;
20+
use Flat3\Lodata\Interfaces\ResponseInterface;
1621
use Flat3\Lodata\Interfaces\SerializeInterface;
1722
use Flat3\Lodata\Traits\HasTransaction;
1823
use Flat3\Lodata\Traits\UseReferences;
1924
use Flat3\Lodata\Transaction\MetadataContainer;
2025
use Flat3\Lodata\Transaction\NavigationRequest;
2126
use Flat3\Lodata\Type\Untyped;
2227
use Illuminate\Contracts\Support\Arrayable;
28+
use Illuminate\Http\Request;
2329
use Illuminate\Support\Str;
2430

25-
class ComplexValue implements ArrayAccess, Arrayable, JsonInterface, ReferenceInterface, SerializeInterface
31+
class ComplexValue implements ArrayAccess, Arrayable, JsonInterface, ReferenceInterface, SerializeInterface, ResourceInterface, ResponseInterface, ContextInterface, PipeInterface
2632
{
2733
use UseReferences;
2834
use HasTransaction;
@@ -418,4 +424,43 @@ public function getOpenAPISchema(): array
418424
{
419425
return $this->getType()->getOpenAPISchema();
420426
}
421-
}
427+
428+
public function getContextUrl(Transaction $transaction): string
429+
{
430+
return $this->getType()->getContextUrl($transaction);
431+
}
432+
433+
public static function pipe(
434+
Transaction $transaction,
435+
string $currentSegment,
436+
?string $nextSegment,
437+
?PipeInterface $argument
438+
): ?PipeInterface {
439+
return null;
440+
}
441+
442+
public function getResourceUrl(Transaction $transaction): string
443+
{
444+
return $this->getType()->getResourceUrl($transaction);
445+
}
446+
447+
public function response(Transaction $transaction, ?ContextInterface $context = null): Response
448+
{
449+
if ($this->transaction) {
450+
$transaction = $this->transaction->replaceQueryParams($transaction);
451+
}
452+
453+
$transaction->assertMethod(Request::METHOD_GET);
454+
455+
$context = $context ?: $this;
456+
457+
$this->metadata = $transaction->createMetadataContainer();
458+
$this->metadata['context'] = $context->getContextUrl($transaction);
459+
460+
$response = $transaction->getResponse();
461+
462+
return $response->setResourceCallback($this, function () use ($transaction) {
463+
$this->emitJson($transaction);
464+
});
465+
}
466+
}

src/Entity.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* @link https://docs.oasis-open.org/odata/odata/v4.01/os/part1-protocol/odata-v4.01-os-part1-protocol.html#_Toc31358838
3232
* @package Flat3\Lodata
3333
*/
34-
class Entity extends ComplexValue implements ResourceInterface, ResponseInterface, ContextInterface, PipeInterface
34+
class Entity extends ComplexValue
3535
{
3636
/**
3737
* The Entity ID

0 commit comments

Comments
 (0)