kcal/app/JsonApi/Schemas/FoodSchema.php

72 lines
2.1 KiB
PHP

<?php
namespace App\JsonApi\Schemas;
use Neomerx\JsonApi\Schema\SchemaProvider;
class FoodSchema extends SchemaProvider
{
/**
* {@inheritdoc}
*/
protected $resourceType = 'foods';
/**
* {@inheritdoc}
*/
public function getId($resource): string
{
return (string) $resource->getRouteKey();
}
/**
* {@inheritdoc}
*/
public function getAttributes($resource): array
{
/** @var \App\Models\Food $resource */
return [
'slug' => $resource->slug,
'name' => $resource->name,
'detail' => $resource->detail,
'brand' => $resource->brand,
'source' => $resource->source,
'notes' => $resource->notes,
'calories' => $resource->calories,
'carbohydrates' => $resource->carbohydrates,
'cholesterol' => $resource->cholesterol,
'fat' => $resource->fat,
'protein' => $resource->protein,
'sodium' => $resource->sodium,
'servingSize' => $resource->serving_size,
'servingSizeFormatted' => $resource->serving_size_formatted,
'servingUnit' => $resource->serving_unit,
'servingUnitFormatted' => $resource->serving_unit_formatted,
'servingWeight' => $resource->serving_weight,
'unitsSupported' => $resource->units_supported->pluck('value'),
'createdAt' => $resource->created_at,
'updatedAt' => $resource->updated_at,
'showUrl' => route('foods.show', $resource),
'editUrl' => route('foods.edit', $resource),
];
}
/**
* @inheritdoc
*/
public function getRelationships($resource, $isPrimary, array $includeRelationships): array
{
return [
'tags' => [
self::SHOW_SELF => true,
self::SHOW_RELATED => true,
self::SHOW_DATA => isset($includeRelationships['tags']),
self::DATA => function () use ($resource) {
return $resource->tags; // @codeCoverageIgnore
},
]
];
}
}