115 lines
6.5 KiB
PHTML
115 lines
6.5 KiB
PHTML
{% use Lean\Console\Lib\Database\ModifierTypeEnum %}
|
|
|
|
{% extends "lean-console/base/layout" %}
|
|
|
|
{% language.set "lean.storage" %}
|
|
|
|
{% title _("title") %}
|
|
|
|
{% section "breadcrumb-items" %}
|
|
<li class="breadcrumb-item">{% _ 'database.breadcrumb' %}</li>
|
|
{% endsection %}
|
|
|
|
{% section "content" %}
|
|
{% if $connections %}
|
|
{% foreach $connections as $connection %}
|
|
<section>
|
|
{% php $conf = $connection->getConfiguration(); %}
|
|
<article class="databases">
|
|
<strong class="grid db-grid">
|
|
<div class="col db-connection">{% _ 'database.connection' %}</div>
|
|
<div class="col db-adapter">{% _ 'database.adapter' %}</div>
|
|
<div class="col db-host">{% _ 'database.host' %}</div>
|
|
<div class="col db-name">{% _ 'database.name' %}</div>
|
|
<div class="col db-username">{% _ 'database.username' %}</div>
|
|
</strong>
|
|
|
|
<div class="grid db-grid">
|
|
<div class="col db-connection">{{ $connection->name }}</div>
|
|
<div class="col db-adapter">{{ $connection->adapter()::class }}</div>
|
|
<div class="col db-host">{{ $connection->adapter()->hostname ?? '-' }}:{{ $connection->adapter()->port ?? '-' }}</div>
|
|
<div class="col db-name">{{ $connection->adapter()->database ?? $connection->adapter()->path ?? '-' }}</div>
|
|
<div class="col db-username">{{ $connection->adapter()->username ?? '-' }}</div>
|
|
</div>
|
|
|
|
<div class="tables">
|
|
<strong class="grid table-item">
|
|
<div class="col">{% _ 'database.table.name' %}</div>
|
|
<div class="col">{% _ 'database.table.table-fields' %}</div>
|
|
<div class="col col-grow-2">{% _ 'database.table.query' %}</div>
|
|
<div class="col text-right">{% _ 'database.table.actions' %}</div>
|
|
</strong>
|
|
|
|
{% ui:form.post "database.migrate", current_url() %}
|
|
{% foreach array_filter($migrations->entities, fn($e) => $e->databaseAdapter() === $connection) as $entity => $item %}
|
|
<div class="grid table-item align-items-center">
|
|
<div class="col"><span>📄</span> <span>{{ $item->tableName() }}</span></div>
|
|
<div class="col">{% _ "database.table.fields", [ 'count' => count( $item->fieldList() ) ] %}</div>
|
|
<div class="col col-grow-2">
|
|
{% if $context->definition[$entity]['table']->modifier->query ?? false %}
|
|
<code>{{= implode('<br><br>',(array) $context->definition[$entity]['table']->modifier->query) }}</code>
|
|
{% else %}
|
|
<div style="color:#abecab">✓ {% _ 'database.table.uptodate' %}</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div class="col">
|
|
{% switch $context->definition[$entity]['table']->modifier->type ?? false %}
|
|
{% case ModifierTypeEnum::Create %}
|
|
{% php $createAll[] = $entity %}
|
|
|
|
<div class="text-right">
|
|
<button name="create" value="{{$entity}}" class="btn-blue">✓ {% _ 'database.table.create' %}</button>
|
|
</div>
|
|
{% break %}
|
|
|
|
{% case ModifierTypeEnum::Alter %}
|
|
{% php $alterAll[] = $entity %}
|
|
|
|
<div class="text-right">
|
|
<button name="alter" value="{{$entity}}" class="btn-blue">✓ {% _ 'database.table.alter' %}</button>
|
|
</div>
|
|
{% break %}
|
|
{% endswitch %}
|
|
|
|
<div class="text-right">
|
|
<a href="{% route 'lean.console:storage.database_insert', [ 'source' => $entity ] %}" class="btn-gray">{% _ 'database.table.add-column' %}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endforeach %}
|
|
|
|
{% if ($createAll ?? 0) > 1 %}
|
|
<div class="text-right" style="padding:0.5rem 0">
|
|
<button name="createAll" value="{{ implode(',', $createAll) }}" class="btn-red">✓ {% _ 'database.table.createAll' %}</button>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if ($alterAll ?? 0) > 1 %}
|
|
<div class="text-right" style="padding:0.5rem 0">
|
|
<button name="alterAll" value="{{ implode(',', $alterAll) }}" class="btn-red">✓ {% _ 'database.table.alterAll' %}</button>
|
|
</div>
|
|
{% endif %}
|
|
{% ui:endform %}
|
|
</div>
|
|
</article>
|
|
</section>
|
|
{% endforeach %}
|
|
{% endif %}
|
|
|
|
<style>
|
|
.databases strong.grid {background: #888a91;color:#fff}
|
|
|
|
.databases .db-grid {padding:0.66rem 0.3rem}
|
|
.databases .db-grid strong {color:#444}
|
|
.databases .db-grid:nth-child(even) {background: #e3e3e3;line-height: 1.5em;font-size: 1.3em;}
|
|
|
|
.databases .tables .table-item {padding:0.33rem 0;background:rgba(255,255,255,0.1);line-height: 1.8em;}
|
|
.databases .tables .table-item:nth-child(even) {background:rgba(255,255,255,0.2)}
|
|
.databases summary {background: #172841;color:#fff;margin: 0 -8px 0 -8px;padding:7px 10px}
|
|
|
|
.tables {background: #2d3137;margin: 0 -8px 0 -8px;color: #fff;padding: 2px 10px;}
|
|
.tables label {padding:10px 5px;display:block}
|
|
section + section { margin-top:15px; }
|
|
</style>
|
|
{% endsection %} |