/** * @param DescriptionBuilder $builder * @return array */ public function toSwagger(DescriptionBuilder $builder) { $out = parent::toSwagger($builder); unset($out['type']); $resourceDefinition = ResourceDefinitionLibrary::make($this->resourceDefinition); $context = Method::toAction($this->route->getMethod(), $this->cardinality); $out['schema'] = ['$ref' => $builder->addResourceDefinition($resourceDefinition, $context, $this->cardinality)]; return $out; }
/** * @param DescriptionBuilder $builder * @return array */ public function toSwagger(DescriptionBuilder $builder) { $response = []; // Is this a native type? if (PropertyType::isNative($this->getType())) { /* $response = [ 'type' => $this->getType() ]; */ } else { $schema = $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->getType()), $this->getContext(), $this->getCardinality()); $response = ['schema' => $schema]; } if (isset($this->description)) { $response['description'] = $this->description; } if ($this->headers) { $response['headers'] = $this->headers->toSwagger($builder); } return $response; }
/** * @param $request * @param $resourceDefinition * @param ContextContract $context * @param int $records * @return SelectQueryParameters */ public function getFilters($request, $resourceDefinition, Context $context, int $records = 10) { $definition = ResourceDefinitionLibrary::make($resourceDefinition); $queryBuilder = new SelectQueryParameters(); // Now check for query parameters foreach ($definition->getFields() as $field) { if ($field instanceof ResourceField && $field->isFilterable()) { $parameter = $this->propertyResolver->getParameterFromRequest($request, $field->getDisplayName()); if ($parameter) { $queryBuilder->where(new WhereParameter($field->getName(), Operator::EQ, $parameter)); } } } // Processors $context->getProcessors()->processFilters($this, $queryBuilder, $request, $definition, $context, $records); return $queryBuilder; }
/** * @param SwaggerBuilder $builder * @param $action * @return mixed[] */ public function toSwagger(SwaggerBuilder $builder, $action) { if (Action::isReadContext($action) && $this->isExpanded()) { return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), $this->getExpandContext(), $this->cardinality)]; } elseif (Action::isWriteContext($action)) { if ($this->linkOnly) { return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), Action::IDENTIFIER, $this->cardinality)]; } else { return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), Action::CREATE, $this->cardinality)]; } } else { return ['type' => 'object', 'schema' => ['properties' => [ResourceTransformer::RELATIONSHIP_LINK => ['type' => 'string']]]]; } }
/** * AbstractResourceController constructor. * @param string $resourceDefinitionClass */ public function __construct($resourceDefinitionClass) { $this->setResourceDefinition(ResourceDefinitionLibrary::make($resourceDefinitionClass)); }