(
name: string,
query: QueryBuilder<any> | NativeQueryBuilder | RawQueryFragment,
options?: CteOptions,
recursive?: boolean,
)
| 2872 | } |
| 2873 | |
| 2874 | private addCte( |
| 2875 | name: string, |
| 2876 | query: QueryBuilder<any> | NativeQueryBuilder | RawQueryFragment, |
| 2877 | options?: CteOptions, |
| 2878 | recursive?: boolean, |
| 2879 | ): this { |
| 2880 | this.ensureNotFinalized(); |
| 2881 | |
| 2882 | if (this.#state.ctes.some(cte => cte.name === name)) { |
| 2883 | throw new Error(`CTE with name '${name}' already exists`); |
| 2884 | } |
| 2885 | |
| 2886 | // Eagerly compile QueryBuilder to RawQueryFragment — later mutations to the sub-query won't be reflected |
| 2887 | const compiled = query instanceof QueryBuilder ? query.toRaw() : query; |
| 2888 | this.#state.ctes.push({ |
| 2889 | name, |
| 2890 | query: compiled, |
| 2891 | recursive, |
| 2892 | columns: options?.columns, |
| 2893 | materialized: options?.materialized, |
| 2894 | meta: query instanceof QueryBuilder ? query.mainAlias.meta : undefined, |
| 2895 | }); |
| 2896 | return this; |
| 2897 | } |
| 2898 | |
| 2899 | clone( |
| 2900 | reset?: boolean | (keyof QBState<Entity>)[], |
no test coverage detected