src/Schema/Postgres/Grammar/GrammarViews.php
<?php
declare(strict_types=1);
namespace Php\Support\Laravel\Database\Schema\Postgres\Grammar;
use Illuminate\Support\Fluent;
use Php\Support\Laravel\Database\Schema\Postgres\Blueprint;
trait GrammarViews
{
public function compileCreateView(Blueprint $blueprint, Fluent $command): string
{
$materialize = $command->get('materialize') ? 'materialized' : '';
return implode(
' ',
array_filter(
[
'create',
$materialize,
'view',
$this->wrapTable($command->get('view')),
'as',
$command->get('select'),
]
)
);
}
public function compileCreateViewOrReplace(Blueprint $blueprint, Fluent $command): string
{
$materialize = $command->get('materialize') ? 'materialized' : '';
return implode(
' ',
array_filter(
[
'create or replace',
$materialize,
'view',
$this->wrapTable($command->get('view')),
'as',
$command->get('select'),
]
)
);
}
public function compileDropView(Blueprint $blueprint, Fluent $command): string
{
return 'drop view ' . $this->wrapTable($command->get('view'));
}
public function compileViewExists(): string
{
return 'select * from information_schema.views where table_schema = ? and table_name = ?';
}
public function compileViewDefinition(): string
{
return 'select view_definition from information_schema.views where table_schema = ? and table_name = ?';
}
}