use Plack::Builder;
use Plack::App::GraphQL;

my $schema = q|
  type Todo {
    task: String!
  }

  type Query {
    todos: [Todo]
  }

  type Mutation {
    add_todo(task: String!): Todo
  }
|;

my @data = (
  {task => 'Exercise!'},
  {task => 'Bulk Milk'},
  {task => 'Walk Dogs'},
);

my %root_value = (
  todos => sub {
    return \@data;
  },
  add_todo => sub {
    my ($args, $context, $info) = @_;
    $context->log->({level =>'debug', message => 'I am here.....'});
    push @data, $args;
    return $args;
  }
);

my $app = Plack::App::GraphQL
  ->new(
      schema => $schema, 
      root_value => \%root_value, 
      graphiql=>1,
      endpoint=>'/graphql')
  ->to_app;


builder {
  enable "SimpleLogger", level => "debug";
  $app;
};