Source of file VersionedRead.php
Size: 1,528 Bytes - Last Modified: 2021-12-23T10:35:47+00:00
/var/www/docs.ssmods.com/process/src/src/GraphQL/Plugins/VersionedRead.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | <?php namespace SilverStripe\Versioned\GraphQL\Plugins; use SilverStripe\Core\Extensible; use SilverStripe\GraphQL\Schema\Field\ModelQuery; use SilverStripe\GraphQL\Schema\Interfaces\ModelQueryPlugin; use SilverStripe\GraphQL\Schema\Schema; use SilverStripe\Versioned\GraphQL\Resolvers\VersionedResolver; use SilverStripe\Versioned\Versioned; // GraphQL dependency is optional in versioned, // and the following implementation relies on existence of this class (in GraphQL v4) if (!interface_exists(ModelQueryPlugin::class)) { return; } class VersionedRead implements ModelQueryPlugin { const IDENTIFIER = 'readVersion'; /** * @return string */ public function getIdentifier(): string { return self::IDENTIFIER; } /** * @param ModelQuery $query * @param Schema $schema * @param array $config */ public function apply(ModelQuery $query, Schema $schema, array $config = []): void { $class = $query->getModel()->getSourceClass(); if (!Extensible::has_extension($class, Versioned::class)) { return; } // The versioned argument only affects global reading state. Should not // apply to nested queries. $rootQuery = $schema->getQueryType()->getFieldByName($query->getName()); if (!$rootQuery) { return; } $query->addResolverAfterware([VersionedResolver::class, 'resolveVersionedRead']); $query->addArg('versioning', 'VersionedInputType'); } } |