Skip to content

Commit

Permalink
fix all defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
mvorisek committed Sep 2, 2022
1 parent f75cbbb commit 0915ca7
Show file tree
Hide file tree
Showing 15 changed files with 72 additions and 11 deletions.
3 changes: 3 additions & 0 deletions src/Field.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ class Field implements Expressionable

// {{{ Core functionality

/**
* @param array<string, mixed> $defaults
*/
public function __construct(array $defaults = [])
{
foreach ($defaults as $key => $val) {
Expand Down
3 changes: 3 additions & 0 deletions src/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,7 @@ private function initEntityIdHooks(): void

/**
* @param Field|Reference|Model\Join $obj
* @param array<string, mixed> $defaults
*/
public function add(object $obj, array $defaults = []): void
{
Expand Down Expand Up @@ -565,6 +566,8 @@ public function addField(string $name, $seed = []): Field
/**
* Adds multiple fields into model.
*
* @param array<string, mixed> $defaults
*
* @return $this
*/
public function addFields(array $fields, array $defaults = [])
Expand Down
3 changes: 3 additions & 0 deletions src/Model/AggregateModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ class AggregateModel extends Model
/** @var array<int, string|Expression> */
public $groupByFields = [];

/**
* @param array<string, mixed> $defaults
*/
public function __construct(Model $baseModel, array $defaults = [])
{
if (!$baseModel->issetPersistence() && !$baseModel->getPersistence() instanceof Persistence\Sql) {
Expand Down
4 changes: 2 additions & 2 deletions src/Model/FieldPropertiesTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ trait FieldPropertiesTrait
/** @var bool Required field must have non-empty value. A null value is considered empty too. */
public bool $required = false;

/** @var array|null For several types enum can provide list of available options. ['blue', 'red']. */
/** @var array<int, mixed>|null For several types enum can provide list of available options. ['blue', 'red']. */
public $enum;

/**
* For fields that can be selected, values can represent interpretation of the values,
* for instance ['F' => 'Female', 'M' => 'Male'].
*
* @var array|null
* @var array<mixed, mixed>|null
*/
public $values;

Expand Down
14 changes: 12 additions & 2 deletions src/Model/Join.php
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,8 @@ public function addField(string $name, array $seed = []): Field
/**
* Adds multiple fields.
*
* @param array<string, mixed> $defaults
*
* @return $this
*/
public function addFields(array $fields = [], array $defaults = [])
Expand Down Expand Up @@ -337,6 +339,8 @@ public function leftJoin(string $foreignTable, array $defaults = []): self
/**
* Creates reference based on a field from the join.
*
* @param array<string, mixed> $defaults
*
* @return Reference\HasOne
*/
public function hasOne(string $link, array $defaults = [])
Expand All @@ -349,6 +353,8 @@ public function hasOne(string $link, array $defaults = [])
/**
* Creates reference based on the field from the join.
*
* @param array<string, mixed> $defaults
*
* @return Reference\HasMany
*/
public function hasMany(string $link, array $defaults = [])
Expand All @@ -359,7 +365,9 @@ public function hasMany(string $link, array $defaults = [])
/**
* Wrapper for ContainsOne that will associate field with join.
*
* @todo NOT IMPLEMENTED !
* @TODO NOT IMPLEMENTED!
*
* @param array<string, mixed> $defaults
*
* @return Reference\ContainsOne
*/
Expand All @@ -375,7 +383,9 @@ public function containsOne(string $link, array $defaults = []) // : Reference
/**
* Wrapper for ContainsMany that will associate field with join.
*
* @todo NOT IMPLEMENTED !
* @TODO NOT IMPLEMENTED!
*
* @param array<string, mixed> $defaults
*
* @return Reference\ContainsMany
*/
Expand Down
16 changes: 16 additions & 0 deletions src/Model/ReferencesTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ protected function _addReference(array $seed, string $link, array $defaults = []

/**
* Add generic relation. Provide your own call-back that will return the model.
*
* @param array<string, mixed> $defaults
*/
public function addReference(string $link, array $defaults): Reference
{
Expand All @@ -62,6 +64,8 @@ public function addReference(string $link, array $defaults): Reference
/**
* Add hasOne reference.
*
* @param array<string, mixed> $defaults
*
* @return Reference\HasOne|Reference\HasOneSql
*/
public function hasOne(string $link, array $defaults = []) // : Reference
Expand All @@ -72,6 +76,8 @@ public function hasOne(string $link, array $defaults = []) // : Reference
/**
* Add hasMany reference.
*
* @param array<string, mixed> $defaults
*
* @return Reference\HasMany
*/
public function hasMany(string $link, array $defaults = []) // : Reference
Expand All @@ -82,6 +88,8 @@ public function hasMany(string $link, array $defaults = []) // : Reference
/**
* Add containsOne reference.
*
* @param array<string, mixed> $defaults
*
* @return Reference\ContainsOne
*/
public function containsOne(string $link, array $defaults = []) // : Reference
Expand All @@ -92,6 +100,8 @@ public function containsOne(string $link, array $defaults = []) // : Reference
/**
* Add containsMany reference.
*
* @param array<string, mixed> $defaults
*
* @return Reference\ContainsMany
*/
public function containsMany(string $link, array $defaults = []) // : Reference
Expand Down Expand Up @@ -133,6 +143,8 @@ public function getReferences(): array

/**
* Traverse to related model.
*
* @param array<string, mixed> $defaults
*/
public function ref(string $link, array $defaults = []): Model
{
Expand All @@ -141,6 +153,8 @@ public function ref(string $link, array $defaults = []): Model

/**
* Return related model.
*
* @param array<string, mixed> $defaults
*/
public function refModel(string $link, array $defaults = []): Model
{
Expand All @@ -149,6 +163,8 @@ public function refModel(string $link, array $defaults = []): Model

/**
* Returns model that can be used for generating sub-query actions.
*
* @param array<string, mixed> $defaults
*/
public function refLink(string $link, array $defaults = []): Model
{
Expand Down
2 changes: 1 addition & 1 deletion src/Model/UserActionsTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ trait UserActionsTrait
* Register new user action for this model. By default UI will allow users to trigger actions
* from UI.
*
* @param array|\Closure $defaults
* @param array<string, mixed>|\Closure $defaults
*/
public function addUserAction(string $name, $defaults = []): UserAction
{
Expand Down
2 changes: 2 additions & 0 deletions src/Persistence.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public function disconnect(): void

/**
* Associate model with the data driver.
*
* @param array<string, mixed> $defaults
*/
public function add(Model $model, array $defaults = []): void
{
Expand Down
3 changes: 3 additions & 0 deletions src/Persistence/Csv.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ class Csv extends Persistence
/** @var array|null Array of field names. */
public $header;

/**
* @param array<string, mixed> $defaults
*/
public function __construct(string $file, array $defaults = [])
{
$this->file = $file;
Expand Down
3 changes: 3 additions & 0 deletions src/Persistence/Sql/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ abstract class Connection
'oci8' => Oracle\Connection::class,
];

/**
* @param array<string, mixed> $defaults
*/
public function __construct(array $defaults = [])
{
$this->setDefaults($defaults);
Expand Down
9 changes: 9 additions & 0 deletions src/Reference.php
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,8 @@ public function getOurModel(?Model $ourModel): Model
* necessary conditions.
*
* IMPORTANT: the returned model must be a fresh clone or freshly built from a seed
*
* @param array<string, mixed> $defaults
*/
public function createTheirModel(array $defaults = []): Model
{
Expand Down Expand Up @@ -244,6 +246,9 @@ protected function initTableAlias(): void
}
}

/**
* @param array<string, mixed> $defaults
*/
protected function addToPersistence(Model $theirModel, array $defaults = []): void
{
if (!$theirModel->issetPersistence()) {
Expand Down Expand Up @@ -284,6 +289,8 @@ protected function getDefaultPersistence(Model $theirModel)
/**
* Returns referenced model without any extra conditions. However other
* relationship types may override this to imply conditions.
*
* @param array<string, mixed> $defaults
*/
public function ref(Model $ourModel, array $defaults = []): Model
{
Expand All @@ -294,6 +301,8 @@ public function ref(Model $ourModel, array $defaults = []): Model
* Returns referenced model without any extra conditions. Ever when extended
* must always respond with Model that does not look into current record
* or scope.
*
* @param array<string, mixed> $defaults
*/
public function refModel(Model $ourModel, array $defaults = []): Model
{
Expand Down
4 changes: 4 additions & 0 deletions src/Reference/HasMany.php
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ public function ref(Model $ourModel, array $defaults = []): Model

/**
* Creates model that can be used for generating sub-query actions.
*
* @param array<string, mixed> $defaults
*/
public function refLink(?Model $ourModel, array $defaults = []): Model
{
Expand All @@ -105,6 +107,8 @@ public function refLink(?Model $ourModel, array $defaults = []): Model

/**
* Adds field as expression to our model. Used in aggregate strategy.
*
* @param array<string, mixed> $defaults
*/
public function addField(string $fieldName, array $defaults = []): Field
{
Expand Down
12 changes: 9 additions & 3 deletions src/Reference/HasOneSql.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class HasOneSql extends HasOne
{
/**
* @param ($theirFieldIsTitle is true ? null : string) $theirFieldName
* @param array<string, mixed> $defaults
*/
private function _addField(string $fieldName, bool $theirFieldIsTitle, ?string $theirFieldName, array $defaults): SqlExpressionField
{
Expand Down Expand Up @@ -67,6 +68,8 @@ private function _addField(string $fieldName, bool $theirFieldIsTitle, ?string $

/**
* Creates expression which sub-selects a field inside related model.
*
* @param array<string, mixed> $defaults
*/
public function addField(string $fieldName, string $theirFieldName = null, array $defaults = []): SqlExpressionField
{
Expand Down Expand Up @@ -97,6 +100,8 @@ public function addField(string $fieldName, string $theirFieldName = null, array
* ['full_name' => 'name', 'day_of_birth' => ['dob', 'type' => 'date']] - use alias and options
* [['dob', 'type' => 'date']] - use options
*
* @param array<string, mixed> $defaults
*
* @return $this
*/
public function addFields(array $fields = [], array $defaults = [])
Expand All @@ -118,6 +123,8 @@ public function addFields(array $fields = [], array $defaults = [])

/**
* Creates model that can be used for generating sub-query actions.
*
* @param array<string, mixed> $defaults
*/
public function refLink(Model $ourModel, array $defaults = []): Model
{
Expand All @@ -128,9 +135,6 @@ public function refLink(Model $ourModel, array $defaults = []): Model
return $theirModel;
}

/**
* Navigate to referenced model.
*/
public function ref(Model $ourModel, array $defaults = []): Model
{
$theirModel = parent::ref($ourModel, $defaults);
Expand All @@ -155,6 +159,8 @@ public function ref(Model $ourModel, array $defaults = []): Model
* $order->hasOne('user_id', 'User')->addTitle();
*
* This will add expression 'user' equal to ref('user_id')['name'];
*
* @param array<string, mixed> $defaults
*/
public function addTitle(array $defaults = []): SqlExpressionField
{
Expand Down
3 changes: 0 additions & 3 deletions tests/FieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -282,9 +282,6 @@ public function testEnum3(): void

public function testEnum4(): void
{
// PHP type control is really crappy...
// This test has no purpose but it stands testament
// to a weird behaviours of PHP
$m = new Model();
$m->addField('foo', ['enum' => [1, 'bar'], 'default' => 1]);
$m = $m->createEntity();
Expand Down
2 changes: 2 additions & 0 deletions tests/Persistence/CsvTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ protected function tearDown(): void

/**
* @param resource $fileHandle
* @param array<string, mixed> $defaults
*/
protected function makeCsvPersistence($fileHandle, array $defaults = []): Persistence\Csv
{
Expand All @@ -46,6 +47,7 @@ protected function makeCsvPersistence($fileHandle, array $defaults = []): Persis

/**
* @param resource $fileHandle
* @param array<string, mixed> $defaults
*/
public function __construct($fileHandle, array $defaults)
{
Expand Down

0 comments on commit 0915ca7

Please sign in to comment.