mirror of
https://github.com/getnamingo/registry.git
synced 2025-08-15 22:03:53 +02:00
PostgreSQL improvements
This commit is contained in:
parent
1dfe6cd163
commit
f827f304e6
2 changed files with 51 additions and 8 deletions
|
@ -169,7 +169,7 @@ class DapiController extends Controller
|
||||||
$sqlWhere
|
$sqlWhere
|
||||||
GROUP BY d.id
|
GROUP BY d.id
|
||||||
ORDER BY $sortField $sortDir
|
ORDER BY $sortField $sortDir
|
||||||
LIMIT $offset, $size
|
" . $this->limitClause($offset, $size) . "
|
||||||
";
|
";
|
||||||
|
|
||||||
$records = $db->select($dataSql, $bindParams);
|
$records = $db->select($dataSql, $bindParams);
|
||||||
|
@ -375,7 +375,7 @@ class DapiController extends Controller
|
||||||
$sqlWhere
|
$sqlWhere
|
||||||
GROUP BY d.id
|
GROUP BY d.id
|
||||||
ORDER BY $sortField $sortDir
|
ORDER BY $sortField $sortDir
|
||||||
LIMIT $offset, $size
|
" . $this->limitClause($offset, $size) . "
|
||||||
";
|
";
|
||||||
|
|
||||||
$records = $db->select($dataSql, $bindParams);
|
$records = $db->select($dataSql, $bindParams);
|
||||||
|
@ -564,7 +564,7 @@ class DapiController extends Controller
|
||||||
$sqlBase
|
$sqlBase
|
||||||
$sqlWhere
|
$sqlWhere
|
||||||
ORDER BY $sortField $sortDir
|
ORDER BY $sortField $sortDir
|
||||||
LIMIT $offset, $size
|
" . $this->limitClause($offset, $size) . "
|
||||||
";
|
";
|
||||||
|
|
||||||
$records = $db->select($dataSql, $bindParams);
|
$records = $db->select($dataSql, $bindParams);
|
||||||
|
@ -736,7 +736,7 @@ class DapiController extends Controller
|
||||||
$sqlBase
|
$sqlBase
|
||||||
$sqlWhere
|
$sqlWhere
|
||||||
ORDER BY $sortField $sortDir
|
ORDER BY $sortField $sortDir
|
||||||
LIMIT $offset, $size
|
" . $this->limitClause($offset, $size) . "
|
||||||
";
|
";
|
||||||
|
|
||||||
$records = $db->select($dataSql, $bindParams);
|
$records = $db->select($dataSql, $bindParams);
|
||||||
|
@ -781,4 +781,22 @@ class DapiController extends Controller
|
||||||
return $response->withHeader('Content-Type', 'application/json');
|
return $response->withHeader('Content-Type', 'application/json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function limitClause(int $offset, int $size): string
|
||||||
|
{
|
||||||
|
// harden numbers
|
||||||
|
$offset = max(0, (int)$offset);
|
||||||
|
$size = max(1, (int)$size);
|
||||||
|
|
||||||
|
switch (envi('DB_DRIVER')) {
|
||||||
|
case 'mysql':
|
||||||
|
// MySQL/MariaDB
|
||||||
|
return "LIMIT {$offset}, {$size}";
|
||||||
|
case 'pgsql':
|
||||||
|
case 'sqlite':
|
||||||
|
default:
|
||||||
|
// PostgreSQL & SQLite
|
||||||
|
return "LIMIT {$size} OFFSET {$offset}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,15 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Argora Foundry
|
||||||
|
*
|
||||||
|
* A modular PHP boilerplate for building SaaS applications, admin panels, and control systems.
|
||||||
|
*
|
||||||
|
* @package App
|
||||||
|
* @author Taras Kondratyuk <help@argora.org>
|
||||||
|
* @copyright Copyright (c) 2025 Argora
|
||||||
|
* @license MIT License
|
||||||
|
* @link https://github.com/getargora/foundry
|
||||||
|
*/
|
||||||
|
|
||||||
namespace App\Middleware;
|
namespace App\Middleware;
|
||||||
|
|
||||||
|
@ -13,9 +24,23 @@ class AuditMiddleware extends Middleware
|
||||||
{
|
{
|
||||||
if (isset($_SESSION['auth_user_id'])) {
|
if (isset($_SESSION['auth_user_id'])) {
|
||||||
$userId = (int) $_SESSION['auth_user_id'];
|
$userId = (int) $_SESSION['auth_user_id'];
|
||||||
$this->container->get('db')->exec("SET @audit_usr_id = $userId");
|
$sessionId = crc32(\Pinga\Session\Session::id());
|
||||||
$this->container->get('db')->exec("SET @audit_ses_id = " . crc32(\Pinga\Session\Session::id()));
|
$db = $this->container->get('db');
|
||||||
|
|
||||||
|
switch (envi('DB_DRIVER')) {
|
||||||
|
case 'mysql':
|
||||||
|
$db->exec("SET @audit_usr_id = {$userId}");
|
||||||
|
$db->exec("SET @audit_ses_id = {$sessionId}");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'pgsql':
|
||||||
|
// Use dotted custom GUC names; SELECT set_config(...) works everywhere
|
||||||
|
$db->exec("SELECT set_config('app.audit_usr_id', '{$userId}', true)");
|
||||||
|
$db->exec("SELECT set_config('app.audit_ses_id', '{$sessionId}', true)");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $handler->handle($request);
|
return $handler->handle($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue