curfle / package-leuchtturm
此包的最新版本(v0.3.0)没有提供许可证信息。
支持在curfle项目中创建GraphQL api的包
v0.3.0
2022-03-09 23:40 UTC
Requires
- php: >=8.0
- curfle/framework: ~0
- joonlabs/php-graphql: ~2
Requires (Dev)
- phpunit/phpunit: ^9.3.3
README
Leuchtturm是一个包,可以帮助您轻松地在Curfle中使用joonlabs\php-graphql构建基于CRUDA操作(创建、读取、更新、删除和全部)的GraphQL-api。
安装
composer require curfle/package-leuchtturm
示例
use GraphQL\Servers\Server; use GraphQL\Schemas\Schema; use GraphQL\Types\GraphQLString; use GraphQL\Types\GraphQLObjectType; use GraphQL\Fields\GraphQLTypeField; // build the query type $manager = new \Leuchtturm\LeuchtturmManager(); $manager->setVocab(new \Leuchtturm\Vocab\German()); // TODO: should never use create again (only create, read, update, delete) $QueryType = new GraphQLObjectType("Query", "Root Query", function () use($manager){ return [ $manager->R(\Examples\Models\Job::class)->build(), $manager->R(\Examples\Models\Login::class)->build(), $manager->R(\Examples\Models\Benutzer::class)->onlyOwner()->build(), // only the owner may read this field $manager->R(\Examples\Models\Rolle::class)->build(), $manager->A(\Examples\Models\Job::class)->build(), $manager->A(\Examples\Models\Login::class)->build(), $manager->A(\Examples\Models\Benutzer::class)->build(), $manager->A(\Examples\Models\Rolle::class)->build(), ]; }); $MutationType = new GraphQLObjectType("Mutation", "Mutation Query", function () use($manager){ return [ // all fields are protected by the default guardian $manager->C(\Examples\Models\Job::class)->guardian()->build(), $manager->C(\Examples\Models\Login::class)->guardian()->build(), $manager->C(\Examples\Models\Benutzer::class)->guardian()->build(), $manager->C(\Examples\Models\Rolle::class)->guardian()->build(), $manager->U(\Examples\Models\Job::class)->guardian()->build(), $manager->U(\Examples\Models\Login::class)->guardian()->build(), $manager->U(\Examples\Models\Benutzer::class)->guardian()->build(), $manager->U(\Examples\Models\Rolle::class)->guardian()->build(), $manager->D(\Examples\Models\Job::class)->guardian()->build(), $manager->D(\Examples\Models\Login::class)->guardian()->build(), $manager->D(\Examples\Models\Benutzer::class)->guardian()->onlyOwner()->build(), // also the owner may delete entries via this field $manager->D(\Examples\Models\Rolle::class)->guardian()->build(), ]; }); // build the schema $schema = new Schema($QueryType, $MutationType); // start a server $server = new Server($schema); $server->listen();