classWriteCompiler
final class WriteCompiler
Restricted visibility: declared "@visibility root". Code outside that scope must not name this declaration.
Compiles literal-shaped writes while preserving their value domains.
Methods§
public function __construct(private Grammar $grammar)Uses the configured framework SQL grammar.
Parameters
$grammar | Grammar |
public function compile(
QueryState $state,
string $method,
list<Domain> $arguments,
): array{Domain, Domain}Parameters
$state | QueryState | |
$method | string | |
$arguments | list<Domain> |
Test cases 6
WriteCompilerTest::testCompileDeletesOneRowByItsKeycallsWriteCompilerTest::testCompileDeletesOnlyTheDerivedPredicateAndRejectsModifierscallsWriteCompilerTest::testCompileDoesNotInterpretACompleteRowAsAnUnknownWriteOperationcallsWriteCompilerTest::testCompileSelectsTheWriteOperationcallsWriteCompilerTest::testInsertGetIdReturnsTheKeyOnlyWhereTheDialectAsksForItcallsWriteCompilerTest::testStepWritesLaravelsRawArithmeticBeforeExtraColumnscalls
Called from 1
Calls 16
- method-call QueryState::items() line 30
- method-call QueryState::get() line 30
- method-call WriteCompiler::unknown() line 31
- function-call
countline 33 - method-call Predicates::basic() line 34
- new Predicates line 34
- static-call Domain::literal() line 34
- static-call Domain::unknown() line 36
- method-call Grammar::wrap() line 37
- method-call WriteCompiler::where() line 37
- static-call QueryState::list() line 37
- function-call
in_arrayline 39 - method-call WriteCompiler::step() line 40
- method-call WriteCompiler::update() line 47
- method-call WriteCompiler::insert() line 50
- method-call WriteCompiler::insertGetId() line 53
public function update(QueryState $state, ArrayTerm $values): array{Domain, Domain}Parameters
$state | QueryState | |
$values | ArrayTerm |
Test cases 1
Called from 2
Calls 14
- method-call ArrayTerm::named() line 64
- function-call
countline 64 - method-call WriteCompiler::unknown() line 65
- method-call Grammar::wrap() line 72
- static-call Domain::literal() line 72
- method-call Grammar::parameter() line 72
- method-call QueryState::get() line 74
- method-call Grammar::join() line 75
- method-call WriteCompiler::where() line 75
- static-call QueryState::list() line 77
- function-call
array_mergeline 77 - method-call Grammar::bindings() line 77
- function-call
array_valuesline 77 - method-call QueryState::items() line 77
public function step(
QueryState $state,
string $method,
list<Domain> $arguments,
): array{Domain, Domain}Parameters
$state | QueryState | |
$method | string | |
$arguments | list<Domain> |
Test cases 1
Called from 1
Calls 17
- static-call Domain::unknown() line 86
- static-call Domain::literal() line 87
- static-call QueryState::list() line 88
- function-call
is_stringline 89 - function-call
countline 89 - method-call WriteCompiler::unknown() line 90
- function-call
is_numericline 93 - method-call Grammar::wrapName() line 94
- new ObjectTerm line 95
- class-const Grammar::EXPRESSION() line 95
- method-call QueryState::array() line 95
- new QueryState line 95
- new ArrayTerm line 96
- function-call
array_mergeline 96 - new ArrayEntry line 96
- static-call Domain::of() line 96
- method-call WriteCompiler::update() line 98
public function insert(
QueryState $state,
ArrayTerm $values,
bool $ignore,
): array{Domain, Domain}Parameters
$state | QueryState | |
$values | ArrayTerm | |
$ignore | bool |
Test cases 5
DialectTest::testInsertPrefixComesFromThePolicycallsDialectTest::testInsertSuffixComesFromThePolicycallsWriteCompilerTest::testInsertRejectsBulkRowsWithDifferentColumnscallsWriteCompilerTest::testInsertSortsBothColumnNamesAndValuesAcrossBulkRowscallsWriteCompilerTest::testInsertUsesEachDialectsIgnoreSyntaxAndPreservesColumnOrdercalls
Called from 2
Calls 13
- method-call WriteCompiler::rows() line 106
- method-call WriteCompiler::unknown() line 108
- function-call
array_keysline 110 - function-call
array_valuesline 117 - static-call Domain::literal() line 118
- method-call Grammar::join() line 118
- function-call
array_mapline 118 - method-call Grammar::parameter() line 118
- function-call
array_mergeline 119 - method-call Grammar::bindings() line 119
- method-call Grammar::wrap() line 122
- method-call QueryState::get() line 122
- static-call QueryState::list() line 127
public function insertGetId(
QueryState $state,
ArrayTerm $values,
Domain $sequence,
): array{Domain, Domain}Parameters
$state | QueryState | |
$values | ArrayTerm | |
$sequence | Domain |
Returns
Test cases 2
Called from 1
Calls 7
- method-call ArrayTerm::named() line 135
- function-call
countline 135 - method-call WriteCompiler::unknown() line 136
- method-call WriteCompiler::insert() line 138
- method-call Domain::soleLiteral() line 143
- static-call Domain::literal() line 145
- method-call Grammar::wrap() line 145
Parameters
$values | ArrayTerm |
Returns
list<array<string, Domain>> Single rows retain order; bulk rows sort their keys.Test cases 1
Called from 1
Calls 4
- method-call ArrayTerm::named() line 153
- function-call
countline 154 - method-call ArrayTerm::positional() line 157
- function-call
ksortline 163
public function where(QueryState $state): DomainThe shared WHERE clause of an update or delete.
Parameters
$state | QueryState |
Returns
Test cases 1
Called from 2
Calls 3
- method-call QueryState::items() line 175
- static-call Domain::literal() line 175
- method-call Grammar::join() line 175
Parameters
$reason | string |
Test cases 1
Called from 9
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:31
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:44
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::compile() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:56
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::update() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:65
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::update() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:70
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::step() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:90
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::insert() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:108
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::insert() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:115
- method-call SqlCatalog\Extension\Laravel\WriteCompiler::insertGetId() packages/sql-catalog/src/Extension/Laravel/WriteCompiler.php:136
Calls 3
- method-call QueryState::reject() line 183
- new QueryState line 183
- static-call Domain::unknown() line 183
Private surface 1§
Implementation details, listed for orientation only.
private Grammar $grammarTest cases 18§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 13
WriteCompilerTest::testCompileDeletesOneRowByItsKeycallsWriteCompilerTest::testCompileDeletesOnlyTheDerivedPredicateAndRejectsModifierscallsWriteCompilerTest::testCompileDoesNotInterpretACompleteRowAsAnUnknownWriteOperationcallsWriteCompilerTest::testCompileSelectsTheWriteOperationcallsWriteCompilerTest::testInsertGetIdReturnsTheKeyOnlyWhereTheDialectAsksForItcallsWriteCompilerTest::testInsertRejectsBulkRowsWithDifferentColumnscallsWriteCompilerTest::testInsertSortsBothColumnNamesAndValuesAcrossBulkRowscallsWriteCompilerTest::testInsertUsesEachDialectsIgnoreSyntaxAndPreservesColumnOrdercallsWriteCompilerTest::testRowsSortsBulkKeysAndRejectsIncompleteRowscallsWriteCompilerTest::testStepWritesLaravelsRawArithmeticBeforeExtraColumnscallsWriteCompilerTest::testUnknownProducesAnIncompleteSqlDomaincallsWriteCompilerTest::testUpdateOrdersAssignmentsBeforePredicateBindingscallsWriteCompilerTest::testWhereDoesNotInventAnEmptyPredicatecalls