- Bugfixes done on MySQL adapter caused by some changes while adding Mssql.

- WIP on Repository and QueryBuilder
This commit is contained in:
Dave M. 2020-01-31 22:01:56 -05:00
parent d12623cc5e
commit 8e91c3a418
7 changed files with 32 additions and 21 deletions

View File

@ -2,6 +2,4 @@
namespace Ulmus\Adapter; namespace Ulmus\Adapter;
class MariaDB extends MySQL { class MariaDB extends MySQL {}
}

View File

@ -16,11 +16,11 @@ class MySQL implements AdapterInterface {
public string $password; public string $password;
public string $charset; public string $charset = "utf8mb4";
public string $unixSocket; public ? string $socket;
public int $port; public int $port = 3306;
public function __construct( public function __construct(
?string $hostname = null, ?string $hostname = null,
@ -74,8 +74,8 @@ class MySQL implements AdapterInterface {
public function buildDataSourceName() : string public function buildDataSourceName() : string
{ {
if ( false !== ($this->unixSocket ?? false) ) { if ( false !== ($this->socket ?? false) ) {
$parts[] = "unix_socket={$this->socket}";
} }
else { else {
$parts[] = "host={$this->hostname}"; $parts[] = "host={$this->hostname}";
@ -87,10 +87,6 @@ class MySQL implements AdapterInterface {
$parts[] = "dbname={$this->database}"; $parts[] = "dbname={$this->database}";
if ( $this->socket ?? false ) {
$parts[] = "socket={$this->socket}";
}
if ( $this->charset ?? false ) { if ( $this->charset ?? false ) {
$parts[] = "charset={$this->charset}"; $parts[] = "charset={$this->charset}";
} }
@ -100,11 +96,11 @@ class MySQL implements AdapterInterface {
public function setup(array $configuration) : void public function setup(array $configuration) : void
{ {
$configuration = array_change_key_case($configuration, \CASE_LOWER); $connection = array_change_key_case($configuration, \CASE_LOWER);
# Either Unix Socket is used, or Host / Port # Either Unix Socket is used, or Host / Port
if ( false !== ( $this->unixSocket = $connection['unix_socket'] ?? false ) ) { if ( null === ( $this->socket = $connection['socket'] ?? null ) ) {
if ( false === ( $this->hostname = $connection['host'] ?? false ) ) { if ( "" === ( $this->hostname = $connection['host'] ?? "" ) ) {
throw new AdapterConfigurationException("Your `host` name is missing from your configuration array"); throw new AdapterConfigurationException("Your `host` name is missing from your configuration array");
} }

View File

@ -7,9 +7,10 @@ class Id extends \Ulmus\Annotation\Property\Field {
public function __construct() public function __construct()
{ {
$this->nullable = false; $this->nullable = false;
$this->type = "int";
$this->attributes['unsigned'] = true; $this->attributes['unsigned'] = true;
$this->attributes['primary_key'] = true; $this->attributes['primary_key'] = true;
parent::__construct('int');
} }
} }

View File

@ -8,8 +8,8 @@ class PdoObject extends PDO {
public function select(string $sql, array $parameters = []) : PDOStatement public function select(string $sql, array $parameters = []) : PDOStatement
{ {
#dump($sql, $parameters); # var_dump($sql, $parameters);
# die();
try { try {
if ( false !== ( $statement = $this->prepare($sql) ) ) { if ( false !== ( $statement = $this->prepare($sql) ) ) {
$statement = $this->execute($statement, $parameters, false); $statement = $this->execute($statement, $parameters, false);

View File

@ -0,0 +1,5 @@
<?php
namespace Ulmus\Exception;
class EmptyDatasetException extends \RuntimeException {}

View File

@ -45,7 +45,7 @@ class QueryBuilder
public function from(string $table, ? string $alias = null, ? string $database = null, ? string $schema = null) : self public function from(string $table, ? string $alias = null, ? string $database = null, ? string $schema = null) : self
{ {
$table = "\"$table\""; // $table = "\"$table\"";
if ( $database ) { if ( $database ) {
$table = "\"$database\".$table"; $table = "\"$database\".$table";

View File

@ -21,8 +21,8 @@ class Repository
public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null) { public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null) {
$this->entityClass = $entity; $this->entityClass = $entity;
$this->alias = $alias; $this->alias = $alias;
$this->adapter = $adapter; $this->adapter = $adapter ?: Ulmus::$defaultAdapter;
$this->queryBuilder = new QueryBuilder( $adapter->adapter() ); $this->queryBuilder = new QueryBuilder( $this->adapter->adapter() );
$this->entityResolver = Ulmus::resolveEntity($entity); $this->entityResolver = Ulmus::resolveEntity($entity);
} }
@ -45,6 +45,17 @@ class Repository
{ {
return $this->where($field, $value)->collectionFromQuery(); return $this->where($field, $value)->collectionFromQuery();
} }
public function count() : int
{
$this->select("count(*) as totalItem");
foreach(Ulmus::iterateQueryBuilder($this->selectSqlQuery()->queryBuilder) as $entityData) {
return $entityData['totalItem'];
}
return 0;
}
public function deleteOne() public function deleteOne()
{ {