subquery.d.cts 1.4 KB

123456789101112131415161718
  1. import type { TypedQueryBuilder } from "../query-builders/query-builder.cjs";
  2. import type { AddAliasToSelection } from "../query-builders/select.types.cjs";
  3. import type { ColumnsSelection, SQL } from "../sql/sql.cjs";
  4. import type { Subquery, WithSubquery, WithSubqueryWithoutSelection } from "../subquery.cjs";
  5. import type { QueryBuilder } from "./query-builders/query-builder.cjs";
  6. export type SubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'sqlite'>> & AddAliasToSelection<TSelection, TAlias, 'sqlite'>;
  7. export type WithSubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'sqlite'>> & AddAliasToSelection<TSelection, TAlias, 'sqlite'>;
  8. export interface WithBuilder {
  9. <TAlias extends string>(alias: TAlias): {
  10. as: {
  11. <TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>)): WithSubqueryWithSelection<TSelection, TAlias>;
  12. (qb: TypedQueryBuilder<undefined> | ((qb: QueryBuilder) => TypedQueryBuilder<undefined>)): WithSubqueryWithoutSelection<TAlias>;
  13. };
  14. };
  15. <TAlias extends string, TSelection extends ColumnsSelection>(alias: TAlias, selection: TSelection): {
  16. as: (qb: SQL | ((qb: QueryBuilder) => SQL)) => WithSubqueryWithSelection<TSelection, TAlias>;
  17. };
  18. }