modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-04-25 08:41:10 +04:00
parent bdc0ce23ed
commit b6d20261e2
4 changed files with 25 additions and 5 deletions

View File

@ -11,8 +11,14 @@ class ValueException extends UserException {
} elseif (is_array($value)) { } elseif (is_array($value)) {
$values = $value; $values = $value;
$parts = []; $parts = [];
foreach ($values as $value) { $index = 0;
$parts[] = self::value($value); foreach ($values as $key => $value) {
if ($key === $index) {
$index++;
$parts[] = self::value($value);
} else {
$parts[] = "$key=>".self::value($value);
}
} }
return "[" . implode(", ", $parts) . "]"; return "[" . implode(", ", $parts) . "]";
} elseif (is_string($value)) { } elseif (is_string($value)) {

View File

@ -1,6 +1,7 @@
<?php <?php
namespace nur\sery\db\sqlite; namespace nur\sery\db\sqlite;
use Exception;
use RuntimeException; use RuntimeException;
use SQLite3; use SQLite3;
@ -10,4 +11,8 @@ class SqliteException extends RuntimeException {
elseif (!$throw) return null; elseif (!$throw) return null;
else throw new static($db->lastErrorMsg(), $db->lastErrorCode()); else throw new static($db->lastErrorMsg(), $db->lastErrorCode());
} }
static final function wrap(Exception $e): self{
return new static($e->getMessage(), $e->getCode(), $e);
}
} }

View File

@ -3,6 +3,7 @@ namespace nur\sery\db\sqlite;
use nur\sery\cl; use nur\sery\cl;
use nur\sery\str; use nur\sery\str;
use nur\sery\UserException;
use nur\sery\ValueException; use nur\sery\ValueException;
use SQLite3; use SQLite3;
use SQLite3Stmt; use SQLite3Stmt;
@ -24,7 +25,7 @@ class _Query {
} elseif (self::is_delete($prefix)) { } elseif (self::is_delete($prefix)) {
$query = self::parse_delete($query, $params); $query = self::parse_delete($query, $params);
} else { } else {
throw new ValueException("requête invalide"); throw SqliteException::wrap(ValueException::invalid_kind($query, "query"));
} }
} elseif (!is_string($query)) { } elseif (!is_string($query)) {
$query = strval($query); $query = strval($query);

View File

@ -1,7 +1,9 @@
<?php <?php
namespace nur\sery\db\sqlite; namespace nur\sery\db\sqlite;
use PHPUnit\Framework\TestCase; use Exception;
use nulib\tests\TestCase;
use nur\sery\ValueException;
class SqliteTest extends TestCase { class SqliteTest extends TestCase {
const CREATE_PERSON = "create table person(nom varchar, prenom varchar, age integer)"; const CREATE_PERSON = "create table person(nom varchar, prenom varchar, age integer)";
@ -34,9 +36,15 @@ class SqliteTest extends TestCase {
], iterator_to_array($sqlite->all("select key, value, done from _migration"))); ], iterator_to_array($sqlite->all("select key, value, done from _migration")));
} }
function testException() {
$sqlite = new Sqlite(":memory:");
self::assertException(Exception::class, [$sqlite, "exec"], "prout");
self::assertException(SqliteException::class, [$sqlite, "exec"], ["prout"]);
}
function testInsert() { function testInsert() {
$sqlite = new Sqlite(":memory:", [ $sqlite = new Sqlite(":memory:", [
"migrate" => "create table mapping (i integer, s varchar)" "migrate" => "create table mapping (i integer, s varchar)",
]); ]);
$sqlite->exec(["insert into mapping", "values" => ["i" => 1, "s" => "un"]]); $sqlite->exec(["insert into mapping", "values" => ["i" => 1, "s" => "un"]]);
$sqlite->exec(["insert mapping", "values" => ["i" => 2, "s" => "deux"]]); $sqlite->exec(["insert mapping", "values" => ["i" => 2, "s" => "deux"]]);