Commit 4b9634e5 authored by Sylvain's avatar Sylvain

BDD - Colonnes d'une table

parent 40899ec1
......@@ -16,6 +16,7 @@ class Mysql extends Driver
private $queries = [
'tables' => "SHOW TABLES;",
'schema' => "select * from INFORMATION_SCHEMA.COLUMNS WHERE `TABLE_SCHEMA` = '{BDD}'",
'columns' => "SELECT ORDINAL_POSITION AS POSITION, COLUMN_NAME AS 'NAME', COLUMN_TYPE AS 'TYPE', CASE COLUMN_KEY WHEN 'PRI' THEN 'PRIMARY' WHEN 'UNI' THEN 'UNIQUE' ELSE NULL END AS 'KEY', COLUMN_DEFAULT AS 'DEFAULT', IS_NULLABLE, EXTRA from INFORMATION_SCHEMA.COLUMNS WHERE `TABLE_SCHEMA` = '{BDD}' AND `TABLE_NAME` = '{TABLE}'",
'select' => "SELECT * FROM `{TABLE}` WHERE 1 LIMIT 25 OFFSET 0;",
'insert' => "INSERT INTO `{TABLE}` ({COLUMNS_NAMES}) VALUES ({COLUMNS_VALUES});",
'update' => "UPDATE `{TABLE}` AS {ALIAS} SET {NAMES_VALUES} WHERE {ALIAS}.`{PK_NAME}` = {ID};",
......@@ -26,6 +27,14 @@ class Mysql extends Driver
private $tables_metas = null;
public function __construct($db)
{
parent::__construct($db);
foreach ($this->queries as $key => $query) {
$this->queries[$key] = str_replace('{BDD}', $this->db->getConfig('database'), $query);
}
}
public function getTables(): Collection
{
......@@ -66,8 +75,8 @@ class Mysql extends Driver
$metas = Cache::remember($cache_key, 5 * 60, function () use ($table, $tables_metas) {
if (is_null($tables_metas)) {
$query = str_replace('{BDD}', $this->db->getConfig('database'), $this->queries['schema']);
$tables_metas = collect($this->db->select($query));
//$query = str_replace('{BDD}', $this->db->getConfig('database'), $this->queries['schema']);
$tables_metas = collect($this->db->select($this->queries['schema']));
}
$columns = $tables_metas->where('TABLE_NAME', $table);
......
......@@ -96,7 +96,7 @@ class ResultLine
public function getAlterQuery()
{
$replace = [
'{TABLE}' => $this->metas->getTableName(),
'{TABLE}' => collect($this->getValues())->first(),
];
$query = str_replace(array_keys($replace), array_values($replace), $this->queries['alter']);
......@@ -104,6 +104,17 @@ class ResultLine
return $query;
}
public function getColumnsQuery()
{
$replace = [
'{TABLE}' => collect($this->getValues())->first(),
];
$query = str_replace(array_keys($replace), array_values($replace), $this->queries['columns']);
return $query;
}
private function getFieldNameValuesText()
{
$names_values = '';
......
......@@ -114,6 +114,16 @@
}
});
// Execution d'une requête seule
$(document).on('click', '.send-query', function(e) {
e.stopPropagation();
var query = $(this).attr('data-query');
if (query) {
_this.sendQuery(query);
}
});
// Rafraichir la liste des tables
$(document).on('click', '.refresh-tables', function() {
_this.refreshTablesList(false);
......
......@@ -4,9 +4,14 @@
<div class="item item-table edit-send-query" data-query="{{ $item->getResult()->first()->getSelectQuery() }}">
<i class="fa fa-table mr-2"></i>{{ $item->getResult()->first()->getValues() }}
<span class="action">
@if (!empty($item->getResult()->first()->getColumnsQuery()))
<i class="bi bi-eye mr-1 send-query" data-query="{{ $item->getResult()->first()->getColumnsQuery() }}" title="Colonnes de la table"></i>
@endif
@if (!empty($item->getResult()->first()->getInsertQuery()))
<i class="bi bi-plus-square mr-1 edit-query" data-query="{{ $item->getResult()->first()->getInsertQuery() }}" title="Nouvelle entrée"></i>
@endif
@if (!empty($item->getResult()->first()->getAlterQuery()))
<i class="bi bi-gear mr-1 edit-query" data-query="{{ $item->getResult()->first()->getAlterQuery() }}" title="Modifier la table"></i>
@endif
......
<script>
const Toast = Swal.mixin({
toast: true,
position: 'bottom-end',
showConfirmButton: false,
timer: 5000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
const Toast = Swal.mixin({
toast: true,
position: 'bottom-end',
showConfirmButton: false,
timer: 5000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
$(function() {
// Mise à jour du token CSRF - Toutes les 5 mins (300000 ms)
setInterval(function() {
$.ajax({
url: '/debusca/csrf-token',
type: 'GET',
dataType: 'json',
success: function(result) {
window.Laravel.csrfToken = result.token;
},
error: function(error) {
document.location.reload();
}
});
}, 300000);
})
</script>
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
......@@ -41,4 +42,10 @@ Route::group(['prefix' => 'debusca', 'as' => 'debusca.'], function ($router) {
Route::post('query', 'BddController@sendQuery')->name('query');
});
// Ping
Route::get('csrf-token', function(Request $request) {
$token = $request->session()->token();
return response()->json(['token' => $token]);
});
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment