wip: 2024-09-11T12:30:59+0200 (1726050659)

This commit is contained in:
Victor Westerlund 2024-09-11 12:33:17 +02:00
parent adc2fda90a
commit 1da21b4b33
2 changed files with 22 additions and 7 deletions

View file

@ -8,8 +8,10 @@
use mysqli_stmt;
use mysqli_result;
use libmysqldriver\Order;
use libmysqldriver\Operators;
require_once "Order.php";
require_once "Operators.php";
// Interface for MySQL_Driver with abstractions for data manipulation
@ -52,7 +54,11 @@
// Convert all boolean type values to tinyints in array
private static function filter_booleans(array $values): array {
return array_map(fn($v): mixed => gettype($v) === "boolean" ? self::filter_boolean($v) : $v, $values);
return array_map(fn(mixed $v): mixed => gettype($v) === "boolean" ? self::filter_boolean($v) : $v, $values);
}
private static function array_wrap_accents(array $input): array {
return array_map(fn(mixed $v): string => "`{$v}`", $input);
}
// Return value(s) that exist in $this->model
@ -209,10 +215,11 @@
return $this;
}
// Create CSV from columns
$sql = implode(",", array_keys($order_by));
// Create pipe DSV from values
$sql .= " " . implode("|", array_values($order_by));
$test = array_map(fn(Order|string $kw): Order => $kw instanceof Order ? $kw : Order::tryFrom($kw), array_values($order_by));
// Create CSV string with Prepared Statement abbreviations from length of fields array.
//$sql = array_map(fn(string $column, Order|string $kw): string => "`{$column}` " . Order::tryFrom($kw), array_keys($order_by), array_values($order_by));
//$sql = implode(",", $sql);
$this->order_by = $sql;
return $this;
@ -236,7 +243,7 @@
}
// Create CSV from columns or default to SQL NULL as a string
$columns_sql = $this->columns ? implode(",", $this->columns) : "NULL";
$columns_sql = $this->columns ? implode(",", self::array_wrap_accents($this->columns)) : "NULL";
// Create LIMIT statement if argument is defined
$limit_sql = !is_null($this->limit) ? " LIMIT {$this->limit}" : "";
@ -268,7 +275,7 @@
}
// Create CSV string with Prepared Statement abbreviations from length of fields array.
$changes = array_map(fn($column) => "{$column} = ?", array_keys($entity));
$changes = array_map(fn($column) => "`{$column}` = ?", array_keys($entity));
$changes = implode(",", $changes);
// Get array of SQL WHERE string and filter values

8
src/Order.php Normal file
View file

@ -0,0 +1,8 @@
<?php
namespace libmysqldriver;
enum Order: string {
case ASC = "ASC";
case DESC = "DESC";
}