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
90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
import { entityKind, is } from "../../entity.js";
|
|
import { GelDialect } from "../dialect.js";
|
|
import { SelectionProxyHandler } from "../../selection-proxy.js";
|
|
import { WithSubquery } from "../../subquery.js";
|
|
import { GelSelectBuilder } from "./select.js";
|
|
class QueryBuilder {
|
|
static [entityKind] = "GelQueryBuilder";
|
|
dialect;
|
|
dialectConfig;
|
|
constructor(dialect) {
|
|
this.dialect = is(dialect, GelDialect) ? dialect : void 0;
|
|
this.dialectConfig = is(dialect, GelDialect) ? void 0 : dialect;
|
|
}
|
|
$with(alias) {
|
|
const queryBuilder = this;
|
|
return {
|
|
as(qb) {
|
|
if (typeof qb === "function") {
|
|
qb = qb(queryBuilder);
|
|
}
|
|
return new Proxy(
|
|
new WithSubquery(qb.getSQL(), qb.getSelectedFields(), alias, true),
|
|
new SelectionProxyHandler({ alias, sqlAliasedBehavior: "alias", sqlBehavior: "error" })
|
|
);
|
|
}
|
|
};
|
|
}
|
|
with(...queries) {
|
|
const self = this;
|
|
function select(fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: self.getDialect(),
|
|
withList: queries
|
|
});
|
|
}
|
|
function selectDistinct(fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: self.getDialect(),
|
|
distinct: true
|
|
});
|
|
}
|
|
function selectDistinctOn(on, fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: self.getDialect(),
|
|
distinct: { on }
|
|
});
|
|
}
|
|
return { select, selectDistinct, selectDistinctOn };
|
|
}
|
|
select(fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: this.getDialect()
|
|
});
|
|
}
|
|
selectDistinct(fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: this.getDialect(),
|
|
distinct: true
|
|
});
|
|
}
|
|
selectDistinctOn(on, fields) {
|
|
return new GelSelectBuilder({
|
|
fields: fields ?? void 0,
|
|
session: void 0,
|
|
dialect: this.getDialect(),
|
|
distinct: { on }
|
|
});
|
|
}
|
|
// Lazy load dialect to avoid circular dependency
|
|
getDialect() {
|
|
if (!this.dialect) {
|
|
this.dialect = new GelDialect(this.dialectConfig);
|
|
}
|
|
return this.dialect;
|
|
}
|
|
}
|
|
export {
|
|
QueryBuilder
|
|
};
|
|
//# sourceMappingURL=query-builder.js.map |