Passed
Pull Request — master (#82)
by Mark
07:57
created

QueryController::get()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Socialblue\LaravelQueryAdviser\Http\Controllers;
4
5
use Illuminate\Routing\Controller;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Facades\Cache;
8
use Illuminate\Support\Facades\DB;
9
use Socialblue\LaravelQueryAdviser\Helper\QueryBuilderHelper;
10
11
/**
12
 * Class QueryController
13
 * @package Socialblue\LaravelQueryAdviser\Http\Controllers
14
 */
15
class QueryController extends Controller
16
{
17
    /**
18
     * Show view
19
     *
20
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
21
     */
22
    public function index() {
23
        return view('QueryAdviser::index');
24
    }
25
26
//    /**
27
//     * Get from cache
28
//     *
29
//     *
30
//     * @param Request $request
31
//     * @return array
32
//     */
33
//    public function get(Request $request): array
34
//    {
35
//        $sessionKey = $request->get('session_key');
36
//        return Cache::rememberForever(config('laravel-query-adviser.cache.session_key'), static function () use ($sessionKey) {
37
//            return Cache::get(config('laravel-query-adviser.cache.key'), [$sessionKey => []])[$sessionKey];
38
//        });
39
//
40
//    }
41
42
    /**
43
     * Clears cache
44
     * @return array
45
     */
46
    public function clear():array
47
    {
48
        return ['success' => Cache::forget(config('laravel-query-adviser.cache.display_key'))];
49
    }
50
51
    /**
52
     * Execute query
53
     *
54
     *
55
     * @param Request $request
56
     * @return array
57
     */
58
    public function exec(Request $request): array
59
    {
60
        $sessionId = $request->input('session-id');
61
62
        $data = Cache::tags(['laravel-query-adviser-sessions'])->get($sessionId);
63
64
        if (isset($data[$request->get('time')][$request->get('time-key')])) {
65
            $query = $data[$request->get('time')][$request->get('time-key')];
66
            return DB::connection()->select($query['sql'], $query['bindings']);
67
        }
68
69
        return [];
70
    }
71
72
    /**
73
     * Use explain for query
74
     *
75
     *
76
     * @param Request $request
77
     * @return array
78
     */
79
    public function explain(Request $request): array
80
    {
81
        $sessionId = $request->input('session-id');
82
83
        $data = Cache::tags(['laravel-query-adviser-sessions'])->get($sessionId);
84
        if (isset($data[$request->get('time')][$request->get('time-key')])) {
85
            $query = $data[$request->get('time')][$request->get('time-key')];
86
            return QueryBuilderHelper::analyze($query['sql'], $query['bindings']);
87
        }
88
89
        return ['queryParts' => "", 'query' => "", 'optimized' => ""];
90
    }
91
92
    /**
93
     *
94
     * @return array
95
     */
96
    public function serverInfo(): array
97
    {
98
        return QueryBuilderHelper::getServerInfo();
99
    }
100
}
101