Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
recca0120 committed Jun 9, 2021
1 parent bf96b8d commit 74a9731
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 44 deletions.
2 changes: 1 addition & 1 deletion src/Converter.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,6 @@ public function handle($binding)
return $binding ? 1 : 0;
}

return $binding ?? 'NULL';
return $binding ?: 'NULL';
}
}
21 changes: 8 additions & 13 deletions src/Dumper.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public function setGrammar($grammar)
*/
public function dump($sql, $bindings, $format = true)
{
$raw = vsprintf($this->toSql($sql), $this->toBindings($bindings));
$raw = $this->bindValues($sql, $bindings);

return $format ? $this->format($raw) : $raw;
}
Expand All @@ -76,26 +76,21 @@ public function dump($sql, $bindings, $format = true)
* @param string $sql
* @return string
*/
protected function format($sql)
private function format($sql)
{
return Formatter::format($sql);
}

/**
* @param string $sql
* @return string
*/
private function toSql($sql)
{
return str_replace(['%', '?'], ['%%', '%s'], $this->grammar->columnize($sql));
}

/**
* @param array $bindings
* @return array|string[]
* @return string
*/
private function toBindings($bindings)
private function bindValues($sql, $bindings)
{
return array_map([$this->converter, 'handle'], $bindings);
return vsprintf(
str_replace(['%', '?'], ['%%', '%s'], $this->grammar->columnize($sql)),
array_map([$this->converter, 'handle'], $bindings)
);
}
}
35 changes: 12 additions & 23 deletions src/EloquentDumperServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
namespace Recca0120\EloquentDumper;

use Closure;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Query\Builder as QueryBuilder;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Arr;
use Illuminate\Support\ServiceProvider;

Expand All @@ -27,10 +27,13 @@ public function register()

$this->app->singleton(EloquentHelper::class, EloquentHelper::class);

Builder::macro('sql', self::sql());
QueryBuilder::macro('sql', self::sql());
Builder::macro('dumpSql', self::dump());
QueryBuilder::macro('dumpSql', self::dump());
$this->registerBuilderMicro('toRawSql', function () {
return app(EloquentHelper::class)->toRawSql($this);
});

$this->registerBuilderMicro('dumpSql', function () {
return app(EloquentHelper::class)->dumpSql($this);
});
}

/**
Expand All @@ -47,23 +50,9 @@ public function boot()
}
}

/**
* @return Closure
*/
private static function sql()
{
return function () {
return app(EloquentHelper::class)->sql($this);
};
}

/**
* @return Closure
*/
private static function dump()
private function registerBuilderMicro(string $method, Closure $closure)
{
return function () {
return app(EloquentHelper::class)->dump($this);
};
Builder::macro($method, $closure);
EloquentBuilder::macro($method, $closure);
}
}
15 changes: 8 additions & 7 deletions src/EloquentHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,20 @@ public function __construct(Application $app)
* @param QueryBuilder|Builder $query
* @return string
*/
public function sql($query)
public function toRawSql($query, $format = false)
{
$this->dumper->setPdo($query->getConnection()->getPdo());

return $this->dumper->dump($query->toSql(), $query->getBindings());
return $this->dumper->dump($query->toSql(), $query->getBindings(), $format);
}

/**
* @param QueryBuilder|Builder $query
* @return Builder|QueryBuilder
*/
public function dump($query)
public function dumpSql($query)
{
$sql = $this->sql($query);
$sql = $this->toRawSql($query, true);

if ($this->app->runningInConsole()) {
echo "\n".$sql."\n";
Expand All @@ -61,9 +61,10 @@ function_exists('dump') ? dump($sql) : var_dump($sql);
public function getRawQueryLog($logs = [])
{
return array_map(function ($log) {
$log['query'] = $this->dumper->dump($log['query'], $log['bindings'], false);

return $log;
return [
'query' => $this->dumper->dump($log['query'], $log['bindings'], false),
'time' => $log['time'],
];
}, empty($logs) ? DB::getQueryLog() : $logs);
}
}

0 comments on commit 74a9731

Please sign in to comment.