From 24a3021e18d08a5f40abb0cadcd2a32bb17fe2c9 Mon Sep 17 00:00:00 2001 From: Alex Standiford Date: Sun, 20 Sep 2026 17:56:37 -0400 Subject: [PATCH 1/2] fix(db): preserve legacy timestamp factory construction --- lib/Factories/Columns/DateCreatedFactory.php | 5 +++-- lib/Factories/Columns/DateModifiedFactory.php | 5 +++-- tests/Unit/Factories/Columns/DateCreatedFactoryTest.php | 2 +- tests/Unit/Factories/Columns/DateModifiedFactoryTest.php | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/Factories/Columns/DateCreatedFactory.php b/lib/Factories/Columns/DateCreatedFactory.php index 41c1b87..5681003 100644 --- a/lib/Factories/Columns/DateCreatedFactory.php +++ b/lib/Factories/Columns/DateCreatedFactory.php @@ -2,19 +2,20 @@ namespace PHPNomad\Database\Factories\Columns; +use DateTimeImmutable; use PHPNomad\Chrono\Interfaces\ClockStrategy; use PHPNomad\Database\Factories\Column; use PHPNomad\Database\Interfaces\CanConvertToColumn; class DateCreatedFactory implements CanConvertToColumn { - public function __construct(protected ClockStrategy $clock) + public function __construct(protected ?ClockStrategy $clock = null) { } public function toColumn(): Column { return (new Column('dateCreated', 'TIMESTAMP', null, 'NOT NULL DEFAULT CURRENT_TIMESTAMP')) - ->withPhpDefault(fn (): string => $this->clock->now()->format('Y-m-d H:i:s')); + ->withPhpDefault(fn (): string => ($this->clock === null ? new DateTimeImmutable() : $this->clock->now())->format('Y-m-d H:i:s')); } } diff --git a/lib/Factories/Columns/DateModifiedFactory.php b/lib/Factories/Columns/DateModifiedFactory.php index 75952c4..85f4e36 100644 --- a/lib/Factories/Columns/DateModifiedFactory.php +++ b/lib/Factories/Columns/DateModifiedFactory.php @@ -2,19 +2,20 @@ namespace PHPNomad\Database\Factories\Columns; +use DateTimeImmutable; use PHPNomad\Chrono\Interfaces\ClockStrategy; use PHPNomad\Database\Factories\Column; use PHPNomad\Database\Interfaces\CanConvertToColumn; class DateModifiedFactory implements CanConvertToColumn { - public function __construct(protected ClockStrategy $clock) + public function __construct(protected ?ClockStrategy $clock = null) { } public function toColumn(): Column { return (new Column('dateModified', 'TIMESTAMP', null, 'NOT NULL DEFAULT CURRENT_TIMESTAMP')) - ->withPhpDefault(fn (): string => $this->clock->now()->format('Y-m-d H:i:s')); + ->withPhpDefault(fn (): string => ($this->clock === null ? new DateTimeImmutable() : $this->clock->now())->format('Y-m-d H:i:s')); } } diff --git a/tests/Unit/Factories/Columns/DateCreatedFactoryTest.php b/tests/Unit/Factories/Columns/DateCreatedFactoryTest.php index 6ad4575..7891135 100644 --- a/tests/Unit/Factories/Columns/DateCreatedFactoryTest.php +++ b/tests/Unit/Factories/Columns/DateCreatedFactoryTest.php @@ -33,7 +33,7 @@ public function testProducesDateCreatedColumnWithDbDefault(): void public function testProvidesPhpDefaultThatReturnsMysqlFormatTimestamp(): void { - $column = (new DateCreatedFactory($this->makeClock()))->toColumn(); + $column = (new DateCreatedFactory())->toColumn(); $default = $column->getPhpDefault(); $this->assertIsCallable($default); diff --git a/tests/Unit/Factories/Columns/DateModifiedFactoryTest.php b/tests/Unit/Factories/Columns/DateModifiedFactoryTest.php index 0bcfdd9..cb6079d 100644 --- a/tests/Unit/Factories/Columns/DateModifiedFactoryTest.php +++ b/tests/Unit/Factories/Columns/DateModifiedFactoryTest.php @@ -33,7 +33,7 @@ public function testProducesDateModifiedColumnWithDbDefault(): void public function testProvidesPhpDefaultThatReturnsMysqlFormatTimestamp(): void { - $column = (new DateModifiedFactory($this->makeClock()))->toColumn(); + $column = (new DateModifiedFactory())->toColumn(); $default = $column->getPhpDefault(); $this->assertIsCallable($default); From 2f4e78f908aef3bbcc9fd0a53579caa405af1904 Mon Sep 17 00:00:00 2001 From: Alex Standiford Date: Sun, 20 Sep 2026 18:02:49 -0400 Subject: [PATCH 2/2] chore(ci): activate inherited db quality gates --- .github/workflows/phpstan.yml | 2 +- .wordlist.txt | 18 +- phpstan-baseline.neon | 956 ++++++++++++++++++++++++++++++++++ phpstan.neon | 5 + 4 files changed, 979 insertions(+), 2 deletions(-) create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 3681a3d..a3c140f 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -14,4 +14,4 @@ jobs: with: path: lib/ tests/ level: 9 - php_version: 8.1 \ No newline at end of file + php_version: 8.2 diff --git a/.wordlist.txt b/.wordlist.txt index 7261aef..b650614 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -23,4 +23,20 @@ Traceback nodejs npm fediverse -readme \ No newline at end of file +readme +phpnomad +datastore +schemas +lookups +DateCreatedFactory +DateModifiedFactory +PHPNomad +PrimaryKeyFactory +PostsTable +getUnprefixedName +DatabaseServiceProvider +IdentifiableDatabaseDatastoreHandler +TableSchemaService +WithDatastoreHandlerMethods +PostDatabaseDatastoreHandler +txt diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..34e0bb0 --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,956 @@ +parameters: + ignoreErrors: + - + message: "#^Access to constant class on an unknown class PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Call to method getIdentity\\(\\) on an unknown class PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Cannot access constant class on mixed\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:andWhere\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:buildConditions\\(\\) has parameter \\$groups with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:countWhere\\(\\) should return int but returns mixed\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:deleteWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:find\\(\\) should return PHPNomad\\\\Datastore\\\\Interfaces\\\\DataModel but returns mixed\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findBy\\(\\) has parameter \\$value with no type specified\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findBy\\(\\) should return PHPNomad\\\\Datastore\\\\Interfaces\\\\DataModel but returns mixed\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findIds\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findIds\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findMultiple\\(\\) has parameter \\$ids with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findMultiple\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:getCacheContextForItem\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:getDuplicates\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:getDuplicates\\(\\) should return array\\ but returns array\\\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:getModels\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:hydrateItems\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:initiateQuery\\(\\) has parameter \\$select with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$updateIdentity with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:orWhere\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:where\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$array of function array_shift expects array, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$array of method PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter\\\\:\\:toModel\\(\\) expects array, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$conditions of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:countWhere\\(\\) expects array\\{type\\: string, clauses\\: array\\\\}, array\\{array\\{type\\: 'AND', clauses\\: array\\\\}\\} given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$conditions of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:countWhere\\(\\) expects array\\{type\\: string, clauses\\: array\\\\}, array\\{array\\{type\\: 'OR', clauses\\: array\\\\}\\} given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array\\ given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array\\{id\\: mixed\\} given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:updateCompound\\(\\) expects array\\, array\\ given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$limit of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:limit\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$offset of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:offset\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$string of function strtoupper expects string, mixed given\\.$#" + count: 3 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$subject of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects array, mixed given\\.$#" + count: 6 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$key of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects string, int given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, array given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, int given\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, string given\\.$#" + count: 2 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Abstracts\\\\IdentifiableDatabaseDatastoreHandler\\:\\:\\$modelAdapter with generic interface PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter does not specify its types\\: TModel$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Variable \\$ids in empty\\(\\) always exists and is not falsy\\.$#" + count: 1 + path: lib/Abstracts/IdentifiableDatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:getAlias\\(\\) should return string but returns mixed\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:getTables\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:getUnprefixedName\\(\\) should return string but returns mixed\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^PHPDoc tag @var for property PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:\\$logger with type mixed is not subtype of native type PHPNomad\\\\Logger\\\\Interfaces\\\\LoggerStrategy\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Parameter \\#1 \\$localPrefixProvider of method PHPNomad\\\\Database\\\\Abstracts\\\\Table\\:\\:__construct\\(\\) expects PHPNomad\\\\Database\\\\Interfaces\\\\HasLocalDatabasePrefix, mixed given\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:\\$leftTable \\(PHPNomad\\\\Database\\\\Abstracts\\\\Table\\) does not accept mixed\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:\\$logger \\(PHPNomad\\\\Logger\\\\Interfaces\\\\LoggerStrategy\\) does not accept mixed\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Abstracts\\\\JunctionTable\\:\\:\\$rightTable \\(PHPNomad\\\\Database\\\\Abstracts\\\\Table\\) does not accept mixed\\.$#" + count: 1 + path: lib/Abstracts/JunctionTable.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Abstracts\\\\Table\\:\\:getFieldsForIdentity\\(\\) should return non\\-empty\\-array\\ but returns array\\.$#" + count: 1 + path: lib/Abstracts/Table.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Column\\:\\:__construct\\(\\) has parameter \\$attributes with no type specified\\.$#" + count: 1 + path: lib/Factories/Column.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Column\\:\\:__construct\\(\\) has parameter \\$typeArgs with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Column.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Column\\:\\:getTypeArgs\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Column.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Factories\\\\Column\\:\\:\\$attributes type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Column.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Factories\\\\Column\\:\\:\\$typeArgs type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Column.php + + - + message: "#^Access to constant class on an unknown class PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Call to method getIdentity\\(\\) on an unknown class PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Cannot access constant class on mixed\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:andWhere\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:buildConditions\\(\\) has parameter \\$groups with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:countWhere\\(\\) should return int but returns mixed\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:deleteWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findBy\\(\\) has parameter \\$value with no type specified\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findBy\\(\\) should return PHPNomad\\\\Datastore\\\\Interfaces\\\\DataModel but returns mixed\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findIds\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findIds\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:getCacheContextForItem\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:getDuplicates\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:getDuplicates\\(\\) should return array\\ but returns array\\\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:getModels\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:hydrateItems\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:initiateQuery\\(\\) has parameter \\$select with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$updateIdentity with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:orWhere\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:where\\(\\) has invalid return type PHPNomad\\\\Datastore\\\\Interfaces\\\\T\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$array of function array_shift expects array, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$array of method PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter\\\\:\\:toModel\\(\\) expects array, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$conditions of method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:countWhere\\(\\) expects array\\{type\\: string, clauses\\: array\\\\}, array\\{array\\{type\\: 'AND', clauses\\: array\\\\}\\} given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$conditions of method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:countWhere\\(\\) expects array\\{type\\: string, clauses\\: array\\\\}, array\\{array\\{type\\: 'OR', clauses\\: array\\\\}\\} given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array\\ given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$limit of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:limit\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$offset of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:offset\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$string of function strtoupper expects string, mixed given\\.$#" + count: 3 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#1 \\$subject of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects array, mixed given\\.$#" + count: 6 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$key of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects string, int given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects string, mixed given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, array given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, int given\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, string given\\.$#" + count: 2 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Factories\\\\DatabaseDatastoreHandler\\:\\:\\$modelAdapter with generic interface PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter does not specify its types\\: TModel$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Variable \\$ids in empty\\(\\) always exists and is not falsy\\.$#" + count: 1 + path: lib/Factories/DatabaseDatastoreHandler.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Index\\:\\:__construct\\(\\) has parameter \\$attributes with no type specified\\.$#" + count: 1 + path: lib/Factories/Index.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Index\\:\\:__construct\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Index.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Factories\\\\Index\\:\\:getAttributes\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Index.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Factories\\\\Index\\:\\:\\$attributes type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Index.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Factories\\\\Index\\:\\:\\$columns type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Factories/Index.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Interfaces\\\\DatabaseContextProvider\\:\\:getModelAdapter\\(\\) has invalid return type PHPNomad\\\\Database\\\\Interfaces\\\\ModelAdapter\\.$#" + count: 2 + path: lib/Interfaces/DatabaseContextProvider.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$tableName$#" + count: 2 + path: lib/Interfaces/JunctionTableQueryService.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Interfaces\\\\QueryStrategy\\:\\:insert\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Interfaces/QueryStrategy.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Interfaces\\\\QueryStrategy\\:\\:query\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Interfaces/QueryStrategy.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Interfaces\\\\QueryStrategy\\:\\:update\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Interfaces/QueryStrategy.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Services\\\\TableSchemaService\\:\\:getCacheContext\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: lib/Services/TableSchemaService.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Services\\\\TableSchemaService\\:\\:getPrimaryColumnNameForTable\\(\\) should return PHPNomad\\\\Database\\\\Factories\\\\Column but returns mixed\\.$#" + count: 1 + path: lib/Services/TableSchemaService.php + + - + message: "#^PHPDoc tag @param references unknown parameter\\: \\$table$#" + count: 1 + path: lib/Services/TableSchemaService.php + + - + message: "#^PHPDoc tag @return with type mixed is not subtype of native type PHPNomad\\\\Database\\\\Factories\\\\Column\\.$#" + count: 1 + path: lib/Services/TableSchemaService.php + + - + message: "#^Trying to invoke \\(callable\\(\\)\\: mixed\\)\\|null but it might not be a callable\\.$#" + count: 1 + path: tests/Unit/Factories/Columns/DateCreatedFactoryTest.php + + - + message: "#^Trying to invoke \\(callable\\(\\)\\: mixed\\)\\|null but it might not be a callable\\.$#" + count: 1 + path: tests/Unit/Factories/Columns/DateModifiedFactoryTest.php + + - + message: "#^Cannot access constant class on mixed\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Else branch is unreachable because ternary operator condition is always true\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:__construct\\(\\) has parameter \\$modelAdapter with generic interface PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter but does not specify its types\\: TModel$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:andWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:andWhere\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:buildConditions\\(\\) has parameter \\$groups with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:countAndWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:countOrWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:countWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:countWhere\\(\\) should return int but returns mixed\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:create\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:deleteWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:exposeCacheContext\\(\\) has parameter \\$ids with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:exposeCacheContext\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findBy\\(\\) has parameter \\$value with no type specified\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findBy\\(\\) should return PHPNomad\\\\Datastore\\\\Interfaces\\\\DataModel but returns mixed\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findByIdentity\\(\\) has no return type specified\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findByIdentity\\(\\) has parameter \\$ids with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findIds\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findIds\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:getCacheContextForItem\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:getDuplicates\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:getModels\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:hydrateItems\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:initiateQuery\\(\\) has parameter \\$select with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:maybeThrowForDuplicateIdentity\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:maybeThrowForDuplicateUniqueFields\\(\\) has parameter \\$updateIdentity with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:orWhere\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:orWhere\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:removeIdentifiableFields\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:updateCompound\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:updateCompound\\(\\) has parameter \\$ids with no type specified\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:where\\(\\) has parameter \\$conditions with no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:where\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$array of function array_shift expects array, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$array of method PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter\\\\:\\:toModel\\(\\) expects array, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$field of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects array\\\\|string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$ids of method PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:findFromCompound\\(\\) expects non\\-empty\\-array\\, array given\\.$#" + count: 3 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$limit of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:limit\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$offset of method PHPNomad\\\\Database\\\\Interfaces\\\\QueryBuilder\\:\\:offset\\(\\) expects int\\<1, max\\>, int\\\\|int\\<1, max\\> given\\.$#" + count: 2 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$string of function strtoupper expects string, mixed given\\.$#" + count: 3 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#1 \\$subject of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects array, mixed given\\.$#" + count: 6 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#2 \\$key of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects string, int given\\.$#" + count: 2 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:andWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:orWhere\\(\\) expects string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#2 \\$operator of method PHPNomad\\\\Database\\\\Interfaces\\\\ClauseBuilder\\:\\:where\\(\\) expects string, mixed given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, array given\\.$#" + count: 2 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, int given\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Parameter \\#3 \\$default of static method PHPNomad\\\\Utils\\\\Helpers\\\\Arr\\:\\:get\\(\\) expects null, string given\\.$#" + count: 2 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:\\$model \\(class\\-string\\\\) does not accept string\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Property PHPNomad\\\\Database\\\\Tests\\\\Unit\\\\Traits\\\\DummyDatastoreHandler\\:\\:\\$modelAdapter with generic interface PHPNomad\\\\Datastore\\\\Interfaces\\\\ModelAdapter does not specify its types\\: TModel$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php + + - + message: "#^Variable \\$ids in empty\\(\\) always exists and is not falsy\\.$#" + count: 1 + path: tests/Unit/Traits/WithDatastoreHandlerMethodsTest.php diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..de3beb4 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,5 @@ +includes: + - phpstan-baseline.neon + +parameters: + level: 9