graphqlitism

This commit is contained in:
Shish 2023-02-04 18:24:34 +00:00
parent 6ca330dd8b
commit 8492ae9ea4
4 changed files with 17 additions and 7 deletions

View file

@ -86,7 +86,7 @@ class Image
}
}
#[Query(name: "post_by_id")]
#[Query(name: "post")]
public static function by_id(int $id): ?Image
{
global $database;

View file

@ -7,17 +7,27 @@ namespace Shimmie2;
use GraphQL\GraphQL as GQL;
use GraphQL\Server\StandardServer;
use GraphQL\Error\DebugFlag;
use GraphQL\Type\Schema;
use GraphQL\Utils\SchemaPrinter;
class GraphQL extends Extension
{
public static function get_schema(): Schema
{
global $_tracer;
$_tracer->begin("Create Schema");
$schema = \GQLA\genSchema();
$_tracer->end(null);
return $schema;
}
public function onPageRequest(PageRequestEvent $event)
{
global $page;
if ($event->page_matches("graphql")) {
$t1 = ftime();
$server = new StandardServer([
'schema' => \GQLA\genSchema(),
'schema' => $this->get_schema(),
]);
$t2 = ftime();
$resp = $server->executeRequest();
@ -36,13 +46,13 @@ class GraphQL extends Extension
{
if ($event->cmd == "help") {
print "\tgraphql <query string>\n";
print "\t\teg 'graphql \"{ post_by_id(id: 18) { id, hash } }\"'\n\n";
print "\t\teg 'graphql \"{ post(id: 18) { id, hash } }\"'\n\n";
print "\tgraphql-schema\n";
print "\t\tdump the schema\n\n";
}
if ($event->cmd == "graphql") {
$t1 = ftime();
$schema = \GQLA\genSchema();
$schema = $this->get_schema();
$t2 = ftime();
$debug = DebugFlag::INCLUDE_DEBUG_MESSAGE | DebugFlag::RETHROW_INTERNAL_EXCEPTIONS;
$body = GQL::executeQuery($schema, $event->args[0])->toArray($debug);
@ -53,7 +63,7 @@ class GraphQL extends Extension
echo \json_encode($body, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
}
if ($event->cmd == "graphql-schema") {
$schema = \GQLA\genSchema();
$schema = $this->get_schema();
echo(SchemaPrinter::doPrint($schema));
}
}

View file

@ -8,7 +8,7 @@ class GraphQLTest extends ShimmiePHPUnitTestCase
{
public function testSchema()
{
$schema = \GQLA\genSchema();
$schema = GraphQL::get_schema();
$schema->assertValid();
$this->assertTrue(true);
}

View file

@ -96,7 +96,7 @@ class PM
return $pms;
}
#[Mutation("create_private_message")]
#[Mutation(name: "create_private_message")]
public static function send_pm(int $to_id, string $subject, string $message): bool
{
global $user;