Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ approve: ## Generate code and approve it as expected
.PHONY: test-examples
test-examples: ## Test examples
cd examples/custom-types && ./test.sh
cd examples/inline-fragments && ./test.sh
cd examples/input && ./test.sh
cd examples/install && ./test.sh
cd examples/php-keywords && ./test.sh
Expand Down
4 changes: 4 additions & 0 deletions examples/inline-fragments/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/sailor
/vendor
/composer.lock
/generated
24 changes: 24 additions & 0 deletions examples/inline-fragments/composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"require": {
"spawnia/sailor": "@dev"
},
"autoload": {
"psr-4": {
"Spawnia\\Sailor\\InlineFragments\\": "generated/"
}
},
"repositories": [
{
"type": "path",
"url": "./sailor",
"options": {
"symlink": false
}
}
],
"scripts": {
"move-package": "rsync --recursive ../../ sailor --exclude examples --exclude vendor --exclude .idea --exclude .git --exclude .build --delete",
"pre-install-cmd": "@move-package",
"pre-update-cmd": "@move-package"
}
}
65 changes: 65 additions & 0 deletions examples/inline-fragments/expected/Operations/SearchQuery.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations;

/**
* @extends \Spawnia\Sailor\Operation<\Spawnia\Sailor\InlineFragments\Operations\SearchQuery\SearchQueryResult>
*/
class SearchQuery extends \Spawnia\Sailor\Operation
{
/**
* @param string $query
*/
public static function execute($query): SearchQuery\SearchQueryResult
{
return self::executeOperation(
$query,
);
}

protected static function converters(): array
{
/** @var array<int, array{string, \Spawnia\Sailor\Convert\TypeConverter}>|null $converters */
static $converters;

return $converters ??= [
['query', new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter)],
];
}

public static function document(): string
{
return /* @lang GraphQL */ 'query SearchQuery($query: String!) {
__typename
search(query: $query) {
__typename
id
... on Article {
title
content {
__typename
text
}
}
... on Video {
title
content {
__typename
url
duration
}
}
}
}';
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search;

/**
* @property string $id
* @property string $title
* @property \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\ArticleContent $content
* @property string $__typename
*/
class Article extends \Spawnia\Sailor\ObjectLike
{
/**
* @param string $id
* @param string $title
* @param \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\ArticleContent $content
*/
public static function make($id, $title, $content): self
{
$instance = new self;

if ($id !== self::UNDEFINED) {
$instance->__set('id', $id);
}
if ($title !== self::UNDEFINED) {
$instance->__set('title', $title);
}
if ($content !== self::UNDEFINED) {
$instance->__set('content', $content);
}
$instance->__typename = 'Article';

return $instance;
}

protected function converters(): array
{
/** @var array<string, \Spawnia\Sailor\Convert\TypeConverter>|null $converters */
static $converters;

return $converters ??= [
'id' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\IDConverter),
'title' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
'content' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\ArticleContent),
'__typename' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
];
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content;

/**
* @property string $text
* @property string $__typename
*/
class ArticleContent extends \Spawnia\Sailor\ObjectLike
{
/**
* @param string $text
*/
public static function make($text): self
{
$instance = new self;

if ($text !== self::UNDEFINED) {
$instance->__set('text', $text);
}
$instance->__typename = 'ArticleContent';

return $instance;
}

protected function converters(): array
{
/** @var array<string, \Spawnia\Sailor\Convert\TypeConverter>|null $converters */
static $converters;

return $converters ??= [
'text' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
'__typename' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
];
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content;

/**
* @property string $url
* @property int $duration
* @property string $__typename
*/
class VideoContent extends \Spawnia\Sailor\ObjectLike
{
/**
* @param string $url
* @param int $duration
*/
public static function make($url, $duration): self
{
$instance = new self;

if ($url !== self::UNDEFINED) {
$instance->__set('url', $url);
}
if ($duration !== self::UNDEFINED) {
$instance->__set('duration', $duration);
}
$instance->__typename = 'VideoContent';

return $instance;
}

protected function converters(): array
{
/** @var array<string, \Spawnia\Sailor\Convert\TypeConverter>|null $converters */
static $converters;

return $converters ??= [
'url' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
'duration' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\IntConverter),
'__typename' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
];
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search;

/**
* @property string $id
* @property string $title
* @property \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\VideoContent $content
* @property string $__typename
*/
class Video extends \Spawnia\Sailor\ObjectLike
{
/**
* @param string $id
* @param string $title
* @param \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\VideoContent $content
*/
public static function make($id, $title, $content): self
{
$instance = new self;

if ($id !== self::UNDEFINED) {
$instance->__set('id', $id);
}
if ($title !== self::UNDEFINED) {
$instance->__set('title', $title);
}
if ($content !== self::UNDEFINED) {
$instance->__set('content', $content);
}
$instance->__typename = 'Video';

return $instance;
}

protected function converters(): array
{
/** @var array<string, \Spawnia\Sailor\Convert\TypeConverter>|null $converters */
static $converters;

return $converters ??= [
'id' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\IDConverter),
'title' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
'content' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Content\VideoContent),
'__typename' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
];
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery;

/**
* @property array<int, \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Article|\Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Video> $search
* @property string $__typename
*/
class SearchQuery extends \Spawnia\Sailor\ObjectLike
{
/**
* @param array<int, \Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Article|\Spawnia\Sailor\InlineFragments\Operations\SearchQuery\Search\Video> $search
*/
public static function make($search): self
{
$instance = new self;

if ($search !== self::UNDEFINED) {
$instance->__set('search', $search);
}
$instance->__typename = 'Query';

return $instance;
}

protected function converters(): array
{
/** @var array<string, \Spawnia\Sailor\Convert\TypeConverter>|null $converters */
static $converters;

return $converters ??= [
'search' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\ListConverter(new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\PolymorphicConverter([
'Article' => '\\Spawnia\\Sailor\\InlineFragments\\Operations\\SearchQuery\\Search\\Article',
'Video' => '\\Spawnia\\Sailor\\InlineFragments\\Operations\\SearchQuery\\Search\\Video',
])))),
'__typename' => new \Spawnia\Sailor\Convert\NonNullConverter(new \Spawnia\Sailor\Convert\StringConverter),
];
}

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../sailor.php');
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php declare(strict_types=1);

namespace Spawnia\Sailor\InlineFragments\Operations\SearchQuery;

class SearchQueryErrorFreeResult extends \Spawnia\Sailor\ErrorFreeResult
{
public SearchQuery $data;

public static function endpoint(): string
{
return 'inline-fragments';
}

public static function config(): string
{
return \Safe\realpath(__DIR__ . '/../../../sailor.php');
}
}
Loading