Fix type issues
This commit is contained in:
parent
d80f26859e
commit
973e92e99f
@ -339,6 +339,8 @@ abstract class AbstractDriver
|
||||
|
||||
/**
|
||||
* Return list of functions for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getFunctions(): ?array
|
||||
{
|
||||
@ -347,6 +349,8 @@ abstract class AbstractDriver
|
||||
|
||||
/**
|
||||
* Return list of stored procedures for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getProcedures(): ?array
|
||||
{
|
||||
@ -355,6 +359,8 @@ abstract class AbstractDriver
|
||||
|
||||
/**
|
||||
* Return list of triggers for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getTriggers(): ?array
|
||||
{
|
||||
|
@ -102,16 +102,22 @@ interface DriverInterface /* extends the interface of PDO */ {
|
||||
|
||||
/**
|
||||
* Return list of functions for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getFunctions(): ?array;
|
||||
|
||||
/**
|
||||
* Return list of stored procedures for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getProcedures(): ?array;
|
||||
|
||||
/**
|
||||
* Return list of triggers for the current database
|
||||
*
|
||||
* @deprecated Will be removed in next version
|
||||
*/
|
||||
public function getTriggers(): ?array;
|
||||
|
||||
|
@ -98,6 +98,8 @@ SQL;
|
||||
|
||||
/**
|
||||
* Returns sql to list triggers
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function triggerList(): string
|
||||
{
|
||||
@ -106,6 +108,8 @@ SQL;
|
||||
|
||||
/**
|
||||
* Return sql to list functions
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function functionList(): string
|
||||
{
|
||||
@ -114,6 +118,8 @@ SQL;
|
||||
|
||||
/**
|
||||
* Return sql to list stored procedures
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function procedureList(): string
|
||||
{
|
||||
|
@ -64,8 +64,6 @@ class Driver extends AbstractDriver {
|
||||
|
||||
/**
|
||||
* Retrieve foreign keys for the table
|
||||
*
|
||||
* @return array<int, array{child_column: mixed, parent_table: mixed, parent_column: mixed, update: mixed, delete: mixed}>
|
||||
*/
|
||||
public function getFks(string $table): array
|
||||
{
|
||||
|
@ -24,4 +24,14 @@ enum JoinType: string {
|
||||
case OUTER = 'outer';
|
||||
case LEFT = 'left';
|
||||
case RIGHT = 'right';
|
||||
}
|
||||
|
||||
public static function parse(string|self $val): self {
|
||||
if ($val instanceof self)
|
||||
{
|
||||
return $val;
|
||||
}
|
||||
|
||||
return self::from($val);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,4 +22,13 @@ enum LikeType: string {
|
||||
case BEFORE = 'before';
|
||||
case AFTER = 'after';
|
||||
case BOTH = 'both';
|
||||
|
||||
public static function parse(string|self $val): self {
|
||||
if ($val instanceof self)
|
||||
{
|
||||
return $val;
|
||||
}
|
||||
|
||||
return self::from($val);
|
||||
}
|
||||
}
|
@ -188,33 +188,33 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
/**
|
||||
* Creates a Like clause in the sql statement
|
||||
*/
|
||||
public function like(string $field, mixed $val, LikeType $pos=LikeType::BOTH): self
|
||||
public function like(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self
|
||||
{
|
||||
return $this->_like($field, $val, $pos);
|
||||
return $this->_like($field, $values, LikeType::parse($pos));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an OR Like clause
|
||||
*/
|
||||
public function orLike(string $field, mixed $val, LikeType $pos=LikeType::BOTH): self
|
||||
public function orLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self
|
||||
{
|
||||
return $this->_like($field, $val, $pos, 'LIKE', 'OR');
|
||||
return $this->_like($field, $values, LikeType::parse($pos), 'LIKE', 'OR');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a NOT LIKE clause
|
||||
*/
|
||||
public function notLike(string $field, mixed $val, LikeType $pos=LikeType::BOTH): self
|
||||
public function notLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self
|
||||
{
|
||||
return $this->_like($field, $val, $pos, 'NOT LIKE');
|
||||
return $this->_like($field, $values, LikeType::parse($pos), 'NOT LIKE');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a OR NOT LIKE clause
|
||||
*/
|
||||
public function orNotLike(string $field, mixed $val, LikeType $pos=LikeType::BOTH): self
|
||||
public function orNotLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self
|
||||
{
|
||||
return $this->_like($field, $val, $pos, 'NOT LIKE', 'OR');
|
||||
return $this->_like($field, $values, LikeType::parse($pos), 'NOT LIKE', 'OR');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -223,17 +223,17 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
/**
|
||||
* Generates a 'Having' clause
|
||||
*/
|
||||
public function having(mixed $key, mixed $val=[]): self
|
||||
public function having(mixed $key, mixed $values=[]): self
|
||||
{
|
||||
return $this->_having($key, $val);
|
||||
return $this->_having($key, $values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a 'Having' clause prefixed with 'OR'
|
||||
*/
|
||||
public function orHaving(mixed $key, mixed $val=[]): self
|
||||
public function orHaving(mixed $key, mixed $values=[]): self
|
||||
{
|
||||
return $this->_having($key, $val, 'OR');
|
||||
return $this->_having($key, $values, 'OR');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
@ -244,17 +244,17 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
* Note: this function works with key / value, or a
|
||||
* passed array with key / value pairs
|
||||
*/
|
||||
public function where(mixed $key, mixed $val=[]): self
|
||||
public function where(mixed $key, mixed $values=[]): self
|
||||
{
|
||||
return $this->_whereString($key, $val);
|
||||
return $this->_whereString($key, $values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Where clause prefixed with "OR"
|
||||
*/
|
||||
public function orWhere(mixed $key, mixed $val=[]): self
|
||||
public function orWhere(mixed $key, mixed $values=[]): self
|
||||
{
|
||||
return $this->_whereString($key, $val, 'OR');
|
||||
return $this->_whereString($key, $values, 'OR');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -323,7 +323,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
/**
|
||||
* Creates a join phrase in a compiled query
|
||||
*/
|
||||
public function join(string $table, string $condition, JoinType $type=JoinType::INNER): self
|
||||
public function join(string $table, string $condition, JoinType|string $type=JoinType::INNER): self
|
||||
{
|
||||
// Prefix and quote table name
|
||||
$tableArr = explode(' ', mb_trim($table));
|
||||
@ -335,7 +335,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
$parsedCondition = $this->parser->compileJoin($condition);
|
||||
$condition = $table . ' ON ' . $parsedCondition;
|
||||
|
||||
$this->state->appendMap("\n" . strtoupper($type->value) . ' JOIN ', $condition, MapType::JOIN);
|
||||
$this->state->appendMap("\n" . strtoupper(JoinType::parse($type)->value) . ' JOIN ', $condition, MapType::JOIN);
|
||||
|
||||
return $this;
|
||||
}
|
||||
@ -490,7 +490,7 @@ class QueryBuilder extends QueryBuilderBase implements QueryBuilderInterface {
|
||||
$this->limit($limit, $offset);
|
||||
}
|
||||
|
||||
return $this->_run('get', $table);
|
||||
return $this->_run(QueryType::SELECT, $table);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -33,15 +33,12 @@ use Query\Drivers\DriverInterface;
|
||||
* @method getColumns(string $table): array | null
|
||||
* @method getDbs(): array | null
|
||||
* @method getFks(string $table): array | null
|
||||
* @method getFunctions(): array | null
|
||||
* @method getIndexes(string $table): array | null
|
||||
* @method getLastQuery(): string
|
||||
* @method getProcedures(): array | null
|
||||
* @method getSchemas(): array | null
|
||||
* @method getSequences(): array | null
|
||||
* @method getSystemTables(): array | null
|
||||
* @method getTables(): array
|
||||
* @method getTriggers(): array | null
|
||||
* @method getTypes(): array | null
|
||||
* @method getUtil(): \Query\Drivers\AbstractUtil
|
||||
* @method getVersion(): string
|
||||
@ -284,10 +281,12 @@ class QueryBuilderBase {
|
||||
if (empty($queryMap) || ( ! regexInArray($conjunctionList, "/^ ?\n?WHERE/i")))
|
||||
{
|
||||
$conj = "\nWHERE ";
|
||||
} elseif ($lastItem['type'] === 'group_start')
|
||||
}
|
||||
elseif ($lastItem['type'] === MapType::GROUP_START)
|
||||
{
|
||||
$conj = '';
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
$conj = " {$defaultConj} ";
|
||||
}
|
||||
|
@ -127,28 +127,28 @@ interface QueryBuilderInterface {
|
||||
*
|
||||
* @param mixed $values
|
||||
*/
|
||||
public function like(string $field, mixed $values, LikeType $pos=LikeType::BOTH): self;
|
||||
public function like(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self;
|
||||
|
||||
/**
|
||||
* Generates an OR Like clause
|
||||
*
|
||||
* @param mixed $values
|
||||
*/
|
||||
public function orLike(string $field, mixed $values, LikeType $pos=LikeType::BOTH): self;
|
||||
public function orLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self;
|
||||
|
||||
/**
|
||||
* Generates a NOT LIKE clause
|
||||
*
|
||||
* @param mixed $values
|
||||
*/
|
||||
public function notLike(string $field, mixed $values, LikeType $pos=LikeType::BOTH): self;
|
||||
public function notLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self;
|
||||
|
||||
/**
|
||||
* Generates a OR NOT LIKE clause
|
||||
*
|
||||
* @param mixed $values
|
||||
*/
|
||||
public function orNotLike(string $field, mixed $values, LikeType $pos=LikeType::BOTH): self;
|
||||
public function orNotLike(string $field, mixed $values, LikeType|string $pos=LikeType::BOTH): self;
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// ! Having methods
|
||||
@ -236,7 +236,7 @@ interface QueryBuilderInterface {
|
||||
/**
|
||||
* Creates a join phrase in a compiled query
|
||||
*/
|
||||
public function join(string $table, string $condition, JoinType $type=JoinType::INNER): self;
|
||||
public function join(string $table, string $condition, JoinType|string $type=JoinType::INNER): self;
|
||||
|
||||
/**
|
||||
* Group the results by the selected field(s)
|
||||
|
@ -101,7 +101,7 @@ abstract class BaseDriverTest extends TestCase {
|
||||
|
||||
public function testGetTriggers(): void
|
||||
{
|
||||
// @TODO standardize trigger output for different databases
|
||||
$this->markTestSkipped('Deprecated');
|
||||
|
||||
$triggers = self::$db->getTriggers();
|
||||
$this->assertTrue(\is_array($triggers));
|
||||
@ -122,12 +122,16 @@ abstract class BaseDriverTest extends TestCase {
|
||||
|
||||
public function testGetProcedures(): void
|
||||
{
|
||||
$this->markTestSkipped('Deprecated');
|
||||
|
||||
$procedures = self::$db->getProcedures();
|
||||
$this->assertTrue(\is_array($procedures));
|
||||
}
|
||||
|
||||
public function testGetFunctions(): void
|
||||
{
|
||||
$this->markTestSkipped('Deprecated');
|
||||
|
||||
$funcs = self::$db->getFunctions();
|
||||
$this->assertTrue(\is_array($funcs));
|
||||
}
|
||||
|
@ -201,6 +201,16 @@ abstract class BaseQueryBuilderTest extends TestCase {
|
||||
$this->assertIsA($query, 'PDOStatement');
|
||||
}
|
||||
|
||||
public function testSelectTableGet(): void
|
||||
{
|
||||
$query = self::$db->select('id, key as k, val')
|
||||
->table('test ct')
|
||||
->where('id >', 1)
|
||||
->get();
|
||||
|
||||
$this->assertIsA($query, 'PDOStatement');
|
||||
}
|
||||
|
||||
public function testSelectFromLimitGet(): void
|
||||
{
|
||||
$query = self::$db->select('id, key as k, val')
|
||||
|
Loading…
Reference in New Issue
Block a user