定制 endeavour-agency/laravel-query-insights 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

endeavour-agency/laravel-query-insights

最新稳定版本:0.1.0

Composer 安装命令:

composer require endeavour-agency/laravel-query-insights

包简介

This packages aims to provide insights into performed queries. Multiple handlers exist to control what should be done with the query data.

README 文档

README

This package aims to provide query insights. By default, it comes with two handlers:

  • LogHandler: Writes the executed queries to a log file
  • LighthouseResponseHandler: Adds the executed queries to the extensions section of a Lighthouse GraphQL response.

Getting started

To get started, simply install the package.

composer require endeavour-agency/laravel-query-insights

Then, in a service provider, register the desired handlers with the QueryCollectorInterface.

public function register(): void
{
    $collector = $this->app->make(QueryCollectorInterface::class);
        
    $collector
        ->registerHandler(
            $this->app->make(LogHandler::class),
        )
        ->registerHandler(
            $this->app->make(LighthouseResponseHandler::class),
        );        
}

Configuration

The package comes with a configuration file which can be published through

php artisan vendor:publish --provider=EndeavourAgency\\LaravelQueryInsights\\Providers\\LaravelQueryInsightsProvider

Through the configuration file, the insights can be enabled or disabled. By default, insights will only be enabled if config('app.debug') evaluates to true.

Alternatively, insights can be enabled or disabled through the QUERY_INSIGHTS_ENABLED env variable.

Handlers

The package bundles a few handlers to get you started quickly.

Log handler

The log handler will log all executed queries to a log file. It accepts an instance of the Psr\Log\LoggerInterface. By default, it will log the queries to the default log channel (config('logging.default')).

Example log handler output:

[2024-11-08 14:27:30] local.INFO: Queries: POST http://localhost:8000/graphql {"queries":[{"query":"select * from `users` where `email` = 'john@doe.com' and `users`.`deleted_at` is null limit 1","sql":"select * from `users` where `email` = ? and `users`.`deleted_at` is null limit 1","bindings":["john@doe.com"],"time":1.54}]}
[2024-11-08 14:27:31] local.INFO: Queries: POST http://localhost:8000/graphql {"queries":[{"query":"select * from `users` where `email` = 'jane@doe.com' and `users`.`deleted_at` is null limit 1","sql":"select * from `users` where `email` = ? and `users`.`deleted_at` is null limit 1","bindings":["jane@doe.com"],"time":1.51}]}

Lighthouse Response Handler

The Lighthouse response handler will add executed queries to the extensions section of the GraphQL responses bodies, when using Lighthouse.

Example Lighthouse response handler output:

{
  "data": {
    "me": {
      "email": "john@doe.com"
    }
  },
  "extensions": {
    "queries": [
      {
        "query": "select * from `oauth_access_tokens` where `id` = '******' limit 1",
        "sql": "select * from `oauth_access_tokens` where `id` = ? limit 1",
        "bindings": [
          "******"
        ],
        "time": 1.51
      },
      {
        "query": "select * from `users` where `id` = '17' and `users`.`deleted_at` is null limit 1",
        "sql": "select * from `users` where `id` = ? and `users`.`deleted_at` is null limit 1",
        "bindings": [
          "17"
        ],
        "time": 0.45
      }
    ]
  }
}

Custom handlers

To create your own handler, simply create a class that implements the EndeavourAgency\LaravelQueryInsights\Contracts\HandlerInterface interface. Then, register it like you would with the default handlers (see Getting started).

统计信息

  • 总下载量: 899
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-11-08