Some checks failed
Main Confidence / confidence (push) Failing after 45s
## Summary - introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries - apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces - expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions) - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions) Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #253
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
import { entityKind, is } from "../../entity.js";
|
|
import { MySqlDialect } from "../dialect.js";
|
|
import { SelectionProxyHandler } from "../../selection-proxy.js";
|
|
import { WithSubquery } from "../../subquery.js";
|
|
import { MySqlSelectBuilder } from "./select.js";
|
|
class QueryBuilder {
|
|
static [entityKind] = "MySqlQueryBuilder";
|
|
dialect;
|
|
dialectConfig;
|
|
constructor(dialect) {
|
|
this.dialect = is(dialect, MySqlDialect) ? dialect : void 0;
|
|
this.dialectConfig = is(dialect, MySqlDialect) ? void 0 : dialect;
|
|
}
|
|
$with = (alias, selection) => {
|
|
const queryBuilder = this;
|
|
const as = (qb) => {
|
|
if (typeof qb === "function") {
|
|
qb = qb(queryBuilder);
|
|
}
|
|
return new Proxy(
|
|
new WithSubquery(
|
|
qb.getSQL(),
|
|
selection ?? ("getSelectedFields" in qb ? qb.getSelectedFields() ?? {} : {}),
|
|
alias,
|
|
true
|
|
),
|
|
new SelectionProxyHandler({ alias, sqlAliasedBehavior: "alias", sqlBehavior: "error" })
|
|
);
|
|
};
|
|
return { as };
|
|
};
|
|
with(...queries) {
|
|
const self = this;
|
|
function select(fields) {
|
|
return new MySqlSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: self.getDialect(),
|
|
withList: queries
|
|
});
|
|
}
|
|
function selectDistinct(fields) {
|
|
return new MySqlSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: self.getDialect(),
|
|
withList: queries,
|
|
distinct: true
|
|
});
|
|
}
|
|
return { select, selectDistinct };
|
|
}
|
|
select(fields) {
|
|
return new MySqlSelectBuilder({ fields: fields ?? void 0, session: void 0, dialect: this.getDialect() });
|
|
}
|
|
selectDistinct(fields) {
|
|
return new MySqlSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: this.getDialect(),
|
|
distinct: true
|
|
});
|
|
}
|
|
// Lazy load dialect to avoid circular dependency
|
|
getDialect() {
|
|
if (!this.dialect) {
|
|
this.dialect = new MySqlDialect(this.dialectConfig);
|
|
}
|
|
return this.dialect;
|
|
}
|
|
}
|
|
export {
|
|
QueryBuilder
|
|
};
|
|
//# sourceMappingURL=query-builder.js.map |