@ignisia/sql 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/cjs/database/alter.d.cts +2 -2
  2. package/dist/cjs/database/column.d.cts +2 -2
  3. package/dist/cjs/database/contract.d.cts +2 -2
  4. package/dist/cjs/database/index.d.cts +2 -2
  5. package/dist/cjs/database/table.d.cts +2 -2
  6. package/dist/cjs/database/types.d.cts +1 -1
  7. package/dist/cjs/database/wrapper.d.cts +1 -1
  8. package/dist/cjs/{index-CHxuUiO4.d.cts → index-CY-nPZED.d.cts} +102 -74
  9. package/dist/cjs/{index-CZhrzE5r.d.cts → index-DQRamRz3.d.cts} +1 -1
  10. package/dist/cjs/index.d.cts +2 -2
  11. package/dist/cjs/migration/index.d.cts +2 -2
  12. package/dist/cjs/migration/type.d.cts +2 -2
  13. package/dist/cjs/query/ast.d.cts +8 -0
  14. package/dist/cjs/query/ast.js +2 -0
  15. package/dist/cjs/query/builder.d.cts +3 -3
  16. package/dist/cjs/query/builder.js +8 -10
  17. package/dist/cjs/query/compiler.d.cts +13 -0
  18. package/dist/cjs/query/compiler.js +114 -0
  19. package/dist/cjs/query/condition/common.d.cts +16 -11
  20. package/dist/cjs/query/condition/common.js +0 -12
  21. package/dist/cjs/query/condition/core.d.cts +1 -1
  22. package/dist/cjs/query/condition/core.js +67 -33
  23. package/dist/cjs/query/condition/index.d.cts +2 -2
  24. package/dist/cjs/query/condition/index.js +0 -7
  25. package/dist/cjs/query/condition/not.d.cts +15 -3
  26. package/dist/cjs/query/constants.d.cts +8 -9
  27. package/dist/cjs/query/constants.js +9 -10
  28. package/dist/cjs/query/contract.d.cts +1 -1
  29. package/dist/cjs/query/explain.d.cts +1 -1
  30. package/dist/cjs/query/explain.js +1 -1
  31. package/dist/cjs/query/helper.d.cts +1 -1
  32. package/dist/cjs/query/helper.js +0 -4
  33. package/dist/cjs/query/index.d.cts +3 -3
  34. package/dist/cjs/query/index.js +1 -11
  35. package/dist/cjs/query/join.d.cts +5 -5
  36. package/dist/cjs/query/join.js +19 -11
  37. package/dist/cjs/query/sql.d.cts +2 -2
  38. package/dist/cjs/query/sql.js +39 -22
  39. package/dist/cjs/query/types.d.cts +1 -1
  40. package/dist/cjs/query/utilities.d.cts +4 -6
  41. package/dist/cjs/query/utilities.js +0 -116
  42. package/dist/cjs/table/index.d.cts +1 -1
  43. package/dist/cjs/table/types.d.cts +1 -1
  44. package/dist/cjs/table/utilities.d.cts +1 -1
  45. package/dist/esm/database/alter.d.ts +2 -2
  46. package/dist/esm/database/column.d.ts +2 -2
  47. package/dist/esm/database/contract.d.ts +2 -2
  48. package/dist/esm/database/index.d.ts +2 -2
  49. package/dist/esm/database/table.d.ts +2 -2
  50. package/dist/esm/database/types.d.ts +1 -1
  51. package/dist/esm/database/wrapper.d.ts +1 -1
  52. package/dist/esm/{index-DgOs61lH.d.ts → index-BWg1JZRt.d.ts} +1 -1
  53. package/dist/esm/{index-CjurLJdK.d.ts → index-CsVPGz2o.d.ts} +102 -74
  54. package/dist/esm/index.d.ts +2 -2
  55. package/dist/esm/migration/index.d.ts +2 -2
  56. package/dist/esm/migration/type.d.ts +2 -2
  57. package/dist/esm/query/ast.d.ts +8 -0
  58. package/dist/esm/query/ast.js +1 -0
  59. package/dist/esm/query/builder.d.ts +3 -3
  60. package/dist/esm/query/builder.js +8 -10
  61. package/dist/esm/query/compiler.d.ts +13 -0
  62. package/dist/esm/query/compiler.js +112 -0
  63. package/dist/esm/query/condition/common.d.ts +16 -11
  64. package/dist/esm/query/condition/common.js +1 -12
  65. package/dist/esm/query/condition/core.d.ts +1 -1
  66. package/dist/esm/query/condition/core.js +68 -34
  67. package/dist/esm/query/condition/index.d.ts +2 -2
  68. package/dist/esm/query/condition/index.js +0 -1
  69. package/dist/esm/query/condition/not.d.ts +15 -3
  70. package/dist/esm/query/constants.d.ts +8 -9
  71. package/dist/esm/query/constants.js +9 -11
  72. package/dist/esm/query/contract.d.ts +1 -1
  73. package/dist/esm/query/explain.d.ts +1 -1
  74. package/dist/esm/query/explain.js +1 -1
  75. package/dist/esm/query/helper.d.ts +1 -1
  76. package/dist/esm/query/helper.js +1 -4
  77. package/dist/esm/query/index.d.ts +3 -3
  78. package/dist/esm/query/index.js +2 -12
  79. package/dist/esm/query/join.d.ts +5 -5
  80. package/dist/esm/query/join.js +19 -11
  81. package/dist/esm/query/sql.d.ts +2 -2
  82. package/dist/esm/query/sql.js +40 -23
  83. package/dist/esm/query/types.d.ts +1 -1
  84. package/dist/esm/query/utilities.d.ts +4 -6
  85. package/dist/esm/query/utilities.js +2 -116
  86. package/dist/esm/table/index.d.ts +1 -1
  87. package/dist/esm/table/types.d.ts +1 -1
  88. package/dist/esm/table/utilities.d.ts +1 -1
  89. package/package.json +4 -4
  90. package/dist/cjs/query/condition/raw.d.cts +0 -8
  91. package/dist/cjs/query/condition/raw.js +0 -54
  92. package/dist/esm/query/condition/raw.d.ts +0 -8
  93. package/dist/esm/query/condition/raw.js +0 -50
@@ -1,7 +1,7 @@
1
1
  import { Column } from './column/index.js';
2
2
  import { TransactionSQL } from 'bun';
3
3
  import { UnionToIntersection, Multiply, Subtract } from './types.js';
4
- import { QueryType, OrderBy, AggregationFunction, ExplainClause, ExplainFormat, AcceptedOperator, QueryHooksType, ConditionClause, LogicalOperator } from './query/constants.js';
4
+ import { QueryType, OrderBy, AggregationFunction, ExplainClause, ExplainFormat, AcceptedOperator, QueryHooksType, ConditionClause, LogicalOperator, AstType, AcceptedJoin } from './query/constants.js';
5
5
  import { AcceptedColumnTypes } from './column/constants.js';
6
6
  import { Dialect } from './table/constants.js';
7
7
 
@@ -12,7 +12,7 @@ type StrictColumnSelector<Alias extends string, TableRef extends Table<string, R
12
12
  [A in keyof JoinedTables]: `${A & string}."${keyof JoinedTables[A]['columns'] & string}"`;
13
13
  }[keyof JoinedTables];
14
14
  type WhereValue<T extends Column> = {
15
- [K in AcceptedOperator]: K extends typeof AcceptedOperator.BETWEEN | typeof AcceptedOperator.NOT_BETWEEN ? [T['_output'], T['_output']] : K extends typeof AcceptedOperator.IN | typeof AcceptedOperator.NOT_IN ? T['_output'][] : K extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL ? never : K extends typeof AcceptedOperator.STARTS_WITH | typeof AcceptedOperator.ENDS_WITH ? T['_output'] : T['_output'];
15
+ [K in AcceptedOperator]: K extends typeof AcceptedOperator.BETWEEN ? [T['_output'], T['_output']] : K extends typeof AcceptedOperator.IN ? T['_output'][] : K extends typeof AcceptedOperator.IS_NULL ? never : K extends typeof AcceptedOperator.STARTS_WITH | typeof AcceptedOperator.ENDS_WITH ? T['_output'] : T['_output'];
16
16
  };
17
17
  type AcceptedOrderBy<Columns extends string> = {
18
18
  column: Columns;
@@ -54,9 +54,8 @@ type AggregateColumn<Allowed extends string, Fn extends AggregationFunction = Ag
54
54
  interface QueryDefinition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>> = NonNullable<unknown>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables> = ColumnSelector<Alias, TableRef, JoinedTables>> {
55
55
  queryType: QueryType | null;
56
56
  select: SelectableColumn<AllowedColumn>[] | null;
57
- where: string[] | null;
58
- having: string[] | null;
59
- params: unknown[] | null;
57
+ where: GroupNode;
58
+ having: GroupNode;
60
59
  limit: number | null;
61
60
  offset: number | null;
62
61
  groupBy: AllowedColumn[] | null;
@@ -65,7 +64,7 @@ interface QueryDefinition<Alias extends string, TableRef extends Table<string, R
65
64
  orderBy: AcceptedOrderBy<AllowedColumn>[] | null;
66
65
  aggregates: AggregateColumn<AllowedColumn>[] | null;
67
66
  distinct: boolean | null;
68
- joins: string[] | null;
67
+ joins: JoinNode[];
69
68
  baseAlias: Alias | null;
70
69
  withDeleted: boolean | null;
71
70
  joinedTables: JoinedTables | null;
@@ -136,32 +135,13 @@ interface ExplainOptions extends Partial<Record<Lowercase<Exclude<ExplainClause,
136
135
  }
137
136
 
138
137
  declare function addCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator], Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: ColName, operator: Operator, value: Value, logical: Logical, negate: boolean): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>, QueryTransformerContract<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>, QueryConditionContract<Alias, TableRef, JoinedTables, Omit<Definition, ValidClause> & { [Key in ValidClause]: string[]; }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>>;
139
- declare function addGroupCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Logical extends LogicalOperator>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, logical: Logical, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>, negate: boolean): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
140
-
141
- declare function alias<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, "baseAlias"> & {
142
- baseAlias: NewAlias;
143
- }>;
144
- declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
145
- declare function rawCol<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn>(column: ColName): ColName;
146
- declare function col<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(column: ColName, alias: ColAlias): {
147
- readonly column: ColName;
148
- readonly as: ColAlias;
149
- };
150
- declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn>(fn: Aggregate, column: ColName): {
151
- column: ColName;
152
- as: Lowercase<Aggregate>;
153
- fn: Aggregate;
154
- };
155
- declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(fn: Aggregate, column: ColName, alias: ColAlias): {
156
- column: ColName;
157
- as: ColAlias;
158
- fn: Aggregate;
159
- };
160
-
161
- declare function addRawCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Clause extends ConditionClause, Logical extends LogicalOperator, ValidClause extends Lowercase<Clause>>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, clause: Clause, column: (c: typeof rawCol) => string, logical: Logical, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
162
- declare function rawWhere<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
163
- declare function rawOr<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
164
- declare function rawHaving<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
138
+ declare function addGroupCondition<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, Logical extends LogicalOperator>(query: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, logical: Logical, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>, negate: boolean): QueryBuilder<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
139
+ where: GroupNode;
140
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>, QueryTransformerContract<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
141
+ where: GroupNode;
142
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>, QueryConditionContract<Alias, TableRef, JoinedTables, Omit<Definition, "where"> & {
143
+ where: GroupNode;
144
+ }, ColumnSelector<Alias, TableRef, JoinedTables>, StrictColumnSelector<Alias, TableRef, JoinedTables>>>;
165
145
 
166
146
  interface QueryTransformerContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
167
147
  toQuery(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, dialect?: Dialect | null): {
@@ -174,26 +154,22 @@ interface QueryTransformerContract<Alias extends string, TableRef extends Table<
174
154
  explain(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, options: ExplainOptions): Promise<unknown>;
175
155
  exec<This extends QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, Output extends This['_output'] = This['_output']>(this: This, tx?: TransactionSQL | null): Promise<Output>;
176
156
  clone(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): typeof this;
177
- alias<NewAlias extends string>(alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, 'baseAlias'> & {
157
+ alias<NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, 'baseAlias'> & {
178
158
  baseAlias: NewAlias;
179
159
  }>;
180
160
  }
181
161
  interface QueryConditionContract<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>> {
182
- rawWhere(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
183
- rawOr(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
184
- rawHaving(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: (c: typeof rawCol) => string, params?: any): ReturnType<typeof addRawCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
185
- where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
162
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
186
163
  where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
187
- or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
164
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
188
165
  or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
189
- on<ColName extends StrictAllowedColumn, Operator extends typeof AcceptedOperator.EQ | typeof AcceptedOperator.NE>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, columnA: ColName, operator: Operator, columnB: ColName): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, ColName, typeof LogicalOperator.ON, Lowercase<typeof ConditionClause.WHERE>>>;
190
166
  having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
191
167
  whereGroup(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.AND>>;
192
168
  orGroup(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.OR>>;
193
169
  not: {
194
- where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
170
+ where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
195
171
  where<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.WHERE>>>;
196
- or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL | typeof AcceptedOperator.IS_NOT_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
172
+ or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends typeof AcceptedOperator.IS_NULL, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
197
173
  or<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.WHERE, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.OR, Lowercase<typeof ConditionClause.WHERE>>>;
198
174
  having<ColName extends StrictAllowedColumn, Col extends ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator extends AcceptedOperator, Value extends WhereValue<Col>[Operator]>(column: ColName, operator: Operator, value: Value): ReturnType<typeof addCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof ConditionClause.HAVING, ColName, ColName extends `${infer TableAlias}.${infer TableColumn}` ? TableAlias extends Alias ? TableRef['columns'][TableColumn] : JoinedTables[TableAlias]['columns'][TableColumn] : never, Operator, Value, typeof LogicalOperator.AND, Lowercase<typeof ConditionClause.HAVING>>>;
199
175
  whereGroup(callback: (q: QueryBuilder<Alias, TableRef, JoinedTables>) => QueryBuilder<Alias, TableRef, JoinedTables>): ReturnType<typeof addGroupCondition<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, typeof LogicalOperator.AND>>;
@@ -318,6 +294,65 @@ declare class Table<TableName extends string, Columns extends Record<string, Col
318
294
  query(): QueryBuilder<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`, QueryTransformerContract<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>, QueryConditionContract<this["name"], this, {}, {}, ColumnSelector<this["name"], this, {}>, `${this["name"]}."${keyof this["columns"] & string}"`>>;
319
295
  }
320
296
 
297
+ interface BaseComparisonNode {
298
+ type: typeof AstType.COMPARISON;
299
+ column: string;
300
+ }
301
+ interface SingleValueComparisonNode extends BaseComparisonNode {
302
+ operator: Exclude<AcceptedOperator, typeof AcceptedOperator.IN | typeof AcceptedOperator.BETWEEN>;
303
+ value: unknown;
304
+ }
305
+ interface MultiValueComparisonNode extends BaseComparisonNode {
306
+ operator: typeof AcceptedOperator.IN | typeof AcceptedOperator.BETWEEN;
307
+ values: unknown[];
308
+ }
309
+ interface NullValueComparisonNode extends BaseComparisonNode {
310
+ operator: typeof AcceptedOperator.IS_NULL;
311
+ }
312
+ type ComparisonNode = SingleValueComparisonNode | MultiValueComparisonNode | NullValueComparisonNode;
313
+ interface GroupNode {
314
+ type: typeof AstType.GROUP;
315
+ operator: LogicalOperator;
316
+ children: AstNode[];
317
+ }
318
+ interface NotNode {
319
+ type: typeof AstType.NOT;
320
+ child: AstNode;
321
+ }
322
+ type AstNode = ComparisonNode | GroupNode | NotNode;
323
+ interface BaseJoinNode {
324
+ type: typeof AstType.JOIN;
325
+ table: Table<string, Record<string, Column>>;
326
+ alias: string;
327
+ }
328
+ interface NonCrossNaturalJoinNode extends BaseJoinNode {
329
+ join: Exclude<AcceptedJoin, typeof AcceptedJoin.CROSS | typeof AcceptedJoin.NATURAL>;
330
+ on: AstNode;
331
+ }
332
+ interface CrossNaturalJoinNode extends BaseJoinNode {
333
+ join: typeof AcceptedJoin.CROSS | typeof AcceptedJoin.NATURAL;
334
+ }
335
+ type JoinNode = CrossNaturalJoinNode | NonCrossNaturalJoinNode;
336
+
337
+ declare function alias<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>, NewAlias extends string>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, alias: NewAlias): QueryBuilder<NewAlias, TableRef, JoinedTables, Omit<Definition, "baseAlias"> & {
338
+ baseAlias: NewAlias;
339
+ }>;
340
+ declare function clone<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(this: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn, QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>>;
341
+ declare function col<StrictAllowedColumn extends string, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(column: ColName, alias: ColAlias): {
342
+ readonly column: ColName;
343
+ readonly as: ColAlias;
344
+ };
345
+ declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn>(fn: Aggregate, column: ColName): {
346
+ column: ColName;
347
+ as: Lowercase<Aggregate>;
348
+ fn: Aggregate;
349
+ };
350
+ declare function aggregateCol<StrictAllowedColumn extends string, Aggregate extends AggregationFunction = AggregationFunction, ColName extends StrictAllowedColumn = StrictAllowedColumn, ColAlias extends string = string>(fn: Aggregate, column: ColName, alias: ColAlias): {
351
+ column: ColName;
352
+ as: ColAlias;
353
+ fn: Aggregate;
354
+ };
355
+
321
356
  declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>> = NonNullable<unknown>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>> = NonNullable<unknown>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables> = ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables> = StrictColumnSelector<Alias, TableRef, JoinedTables>, TransformerContract extends QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryTransformerContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, QueryContract extends QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn> = QueryConditionContract<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>> {
322
357
  readonly hooks: Partial<QueryHooks>;
323
358
  readonly table: TableRef;
@@ -330,14 +365,9 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
330
365
  toDebugString: TransformerContract['toDebugString'];
331
366
  explain: TransformerContract['explain'];
332
367
  exec: TransformerContract['exec'];
333
- rawWhere: QueryContract['rawWhere'];
334
- rawAnd: QueryContract['rawWhere'];
335
- rawOr: QueryContract['rawOr'];
336
- rawHaving: QueryContract['rawHaving'];
337
368
  where: QueryContract['where'];
338
369
  and: QueryContract['where'];
339
370
  or: QueryContract['or'];
340
- on: QueryContract['on'];
341
371
  having: QueryContract['having'];
342
372
  whereGroup: QueryContract['whereGroup'];
343
373
  orGroup: QueryContract['orGroup'];
@@ -345,74 +375,72 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
345
375
  constructor(table: TableRef);
346
376
  leftJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
347
377
  on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
348
- joins: string[];
378
+ joins: JoinNode[];
349
379
  joinedTables: ReturnedJoinedTables;
350
380
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
351
- joins: string[];
381
+ joins: JoinNode[];
352
382
  joinedTables: ReturnedJoinedTables;
353
383
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
354
- joins: string[];
384
+ joins: JoinNode[];
355
385
  joinedTables: ReturnedJoinedTables;
356
386
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
357
387
  };
358
388
  rightJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
359
389
  on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
360
- joins: string[];
390
+ joins: JoinNode[];
361
391
  joinedTables: ReturnedJoinedTables;
362
392
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
363
- joins: string[];
393
+ joins: JoinNode[];
364
394
  joinedTables: ReturnedJoinedTables;
365
395
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
366
- joins: string[];
396
+ joins: JoinNode[];
367
397
  joinedTables: ReturnedJoinedTables;
368
398
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
369
399
  };
370
400
  innerJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
371
401
  on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
372
- joins: string[];
402
+ joins: JoinNode[];
373
403
  joinedTables: ReturnedJoinedTables;
374
404
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
375
- joins: string[];
405
+ joins: JoinNode[];
376
406
  joinedTables: ReturnedJoinedTables;
377
407
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
378
- joins: string[];
408
+ joins: JoinNode[];
379
409
  joinedTables: ReturnedJoinedTables;
380
410
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
381
411
  };
382
412
  fullJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
383
413
  on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
384
- joins: string[];
414
+ joins: JoinNode[];
385
415
  joinedTables: ReturnedJoinedTables;
386
416
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
387
- joins: string[];
417
+ joins: JoinNode[];
388
418
  joinedTables: ReturnedJoinedTables;
389
419
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
390
- joins: string[];
420
+ joins: JoinNode[];
391
421
  joinedTables: ReturnedJoinedTables;
392
422
  }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
393
423
  };
394
424
  crossJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
395
- joins: string[];
425
+ joins: JoinNode[];
396
426
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
397
427
  }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, QueryTransformerContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
398
- joins: string[];
428
+ joins: JoinNode[];
399
429
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
400
430
  }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>, QueryConditionContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
401
- joins: string[];
431
+ joins: JoinNode[];
432
+ joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
433
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>>;
434
+ naturalJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): QueryBuilder<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
435
+ joins: JoinNode[];
436
+ joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
437
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, QueryTransformerContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
438
+ joins: JoinNode[];
439
+ joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
440
+ }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>, QueryConditionContract<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }, Omit<Definition, "joins" | "joinedTables"> & {
441
+ joins: JoinNode[];
402
442
  joinedTables: JoinedTables & { [K in JoinAlias]: JoinTable; };
403
443
  }, ColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>, StrictColumnSelector<Alias, TableRef, JoinedTables & { [K in JoinAlias]: JoinTable; }>>>;
404
- naturalJoin<JoinTable extends Table<string, Record<string, Column>>, JoinAlias extends string>(joinTable: JoinTable, alias: JoinAlias): {
405
- on<FinalJoinedTables extends JoinedTables & { [K in JoinAlias]: JoinTable; }, ReturnedJoinedTables extends FinalJoinedTables = FinalJoinedTables>(callback: (q: QueryBuilder<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>, QueryTransformerContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>, QueryConditionContract<Alias, TableRef, FinalJoinedTables, {}, ColumnSelector<Alias, TableRef, FinalJoinedTables>, StrictColumnSelector<Alias, TableRef, FinalJoinedTables>>>) => QueryBuilder<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, {}, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>): QueryBuilder<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
406
- joins: string[];
407
- joinedTables: ReturnedJoinedTables;
408
- }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>, QueryTransformerContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
409
- joins: string[];
410
- joinedTables: ReturnedJoinedTables;
411
- }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>, QueryConditionContract<Alias, TableRef, ReturnedJoinedTables, Omit<Definition, "joins" | "joinedTables"> & {
412
- joins: string[];
413
- joinedTables: ReturnedJoinedTables;
414
- }, ColumnSelector<Alias, TableRef, ReturnedJoinedTables>, StrictColumnSelector<Alias, TableRef, ReturnedJoinedTables>>>;
415
- };
416
444
  distinct(): QueryBuilder<Alias, TableRef, JoinedTables, Definition & {
417
445
  distinct: true;
418
446
  }>;
@@ -469,4 +497,4 @@ declare class QueryBuilder<Alias extends TableRef['name'], TableRef extends Tabl
469
497
  infer(): this['_output'];
470
498
  }
471
499
 
472
- export { type AliasedColumn as A, alias as B, type ColumnSelector as C, type DatabaseDefinition as D, type ExplainOptions as E, clone as F, rawCol as G, col as H, aggregateCol as I, type SqlConfig as J, createdAt as K, updatedAt as L, type MergeTimestampParanoid as M, deletedAt as N, defineColumns as O, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type SqlConfigMapping as S, Table as T, type TableOptions as U, type TableOutput as V, type WhereValue as W, type ExecOptions as X, addCondition as a, addGroupCondition as b, addRawCondition as c, rawOr as d, rawHaving as e, type TimestampOptions as f, type DatabaseDialect as g, type DatabaseExecOptions as h, type MysqlConfig as i, type SqliteConfig as j, type StrictColumnSelector as k, QueryBuilder as l, type SelectableColumn as m, type QueryTransformerContract as n, type QueryConditionContract as o, type QueryHooks as p, type DatabaseOptions as q, rawWhere as r, type QueryRunHooks as s, type AcceptedOrderBy as t, type AcceptedInsertValues as u, type AcceptedUpdateValues as v, type AggregateColumn as w, type SelectQueryOutput as x, type QueryOutput as y, type QueryRunHooksOptions as z };
500
+ export { clone as $, type AliasedColumn as A, deletedAt as B, type ColumnSelector as C, type DatabaseDefinition as D, type ExplainOptions as E, defineColumns as F, type GroupNode as G, type TableOptions as H, type TableOutput as I, type JoinNode as J, type ExecOptions as K, type SingleValueComparisonNode as L, type MergeTimestampParanoid as M, type MultiValueComparisonNode as N, type NullValueComparisonNode as O, type PostgresConfig as P, type QueryDefinition as Q, type RawColumn as R, type StrictColumnSelector as S, Table as T, type ComparisonNode as U, type NotNode as V, type WhereValue as W, type BaseJoinNode as X, type NonCrossNaturalJoinNode as Y, type CrossNaturalJoinNode as Z, alias as _, addCondition as a, col as a0, aggregateCol as a1, addGroupCondition as b, QueryBuilder as c, type SelectableColumn as d, type QueryTransformerContract as e, type QueryConditionContract as f, type AstNode as g, type TimestampOptions as h, type SqlConfigMapping as i, type DatabaseDialect as j, type DatabaseExecOptions as k, type MysqlConfig as l, type SqliteConfig as m, type QueryHooks as n, type DatabaseOptions as o, type QueryRunHooks as p, type AcceptedOrderBy as q, type AcceptedInsertValues as r, type AcceptedUpdateValues as s, type AggregateColumn as t, type SelectQueryOutput as u, type QueryOutput as v, type QueryRunHooksOptions as w, type SqlConfig as x, createdAt as y, updatedAt as z };
@@ -1,7 +1,7 @@
1
1
  export { Column } from './column/index.js';
2
- export { D as Database } from './index-DgOs61lH.js';
2
+ export { D as Database } from './index-BWg1JZRt.js';
3
3
  export { Migration } from './migration/index.js';
4
- export { l as QueryBuilder, T as Table } from './index-CjurLJdK.js';
4
+ export { c as QueryBuilder, T as Table } from './index-CsVPGz2o.js';
5
5
  import './table/constants.js';
6
6
  import './column/constants.js';
7
7
  import './column/types.js';
@@ -1,6 +1,6 @@
1
1
  import { Column } from '../column/index.js';
2
- import { D as Database } from '../index-DgOs61lH.js';
3
- import { T as Table } from '../index-CjurLJdK.js';
2
+ import { D as Database } from '../index-BWg1JZRt.js';
3
+ import { T as Table } from '../index-CsVPGz2o.js';
4
4
  import { Dialect } from '../table/constants.js';
5
5
  import { MigrationOptions, MigrationFn } from './type.js';
6
6
  import '../column/constants.js';
@@ -1,6 +1,6 @@
1
1
  import { Column } from '../column/index.js';
2
- import { D as Database } from '../index-DgOs61lH.js';
3
- import { T as Table } from '../index-CjurLJdK.js';
2
+ import { D as Database } from '../index-BWg1JZRt.js';
3
+ import { T as Table } from '../index-CsVPGz2o.js';
4
4
  import { Dialect } from '../table/constants.js';
5
5
  import '../column/constants.js';
6
6
  import '../column/types.js';
@@ -0,0 +1,8 @@
1
+ import '../column/index.js';
2
+ export { g as AstNode, X as BaseJoinNode, U as ComparisonNode, Z as CrossNaturalJoinNode, G as GroupNode, J as JoinNode, N as MultiValueComparisonNode, Y as NonCrossNaturalJoinNode, V as NotNode, O as NullValueComparisonNode, L as SingleValueComparisonNode } from '../index-CsVPGz2o.js';
3
+ import './constants.js';
4
+ import '../table/constants.js';
5
+ import '../column/constants.js';
6
+ import '../column/types.js';
7
+ import 'bun';
8
+ import '../types.js';
@@ -0,0 +1 @@
1
+
@@ -1,4 +1,4 @@
1
- import { T as Table, Q as QueryDefinition, C as ColumnSelector, k as StrictColumnSelector, l as QueryBuilder } from '../index-CjurLJdK.js';
1
+ import { T as Table, Q as QueryDefinition, C as ColumnSelector, S as StrictColumnSelector, c as QueryBuilder } from '../index-CsVPGz2o.js';
2
2
  import { Column } from '../column/index.js';
3
3
  import 'bun';
4
4
  import '../types.js';
@@ -8,8 +8,8 @@ import '../table/constants.js';
8
8
  import '../column/types.js';
9
9
 
10
10
  declare function buildSelectQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
11
- declare function buildInsertQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
12
- declare function buildUpdateQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
11
+ declare function buildInsertQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, params: unknown[]): string;
12
+ declare function buildUpdateQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>, params: unknown[]): string;
13
13
  declare function buildDeleteQuery<Alias extends string, TableRef extends Table<string, Record<string, Column>>, JoinedTables extends Record<string, Table<string, Record<string, Column>>>, Definition extends Partial<QueryDefinition<Alias, TableRef, JoinedTables>>, AllowedColumn extends ColumnSelector<Alias, TableRef, JoinedTables>, StrictAllowedColumn extends StrictColumnSelector<Alias, TableRef, JoinedTables>>(q: QueryBuilder<Alias, TableRef, JoinedTables, Definition, AllowedColumn, StrictAllowedColumn>): string;
14
14
 
15
15
  export { buildDeleteQuery, buildInsertQuery, buildSelectQuery, buildUpdateQuery };
@@ -30,7 +30,7 @@ function buildSelectQuery(q) {
30
30
  const distinct = q.definition.distinct ? "DISTINCT " : "";
31
31
  return `SELECT ${distinct}${columns.join(", ")} FROM ${from}`;
32
32
  }
33
- function buildInsertQuery(q) {
33
+ function buildInsertQuery(q, params) {
34
34
  const rows = q.definition?.insertValues;
35
35
  if (!rows?.length) {
36
36
  throw new Error(`INSERT requires values`);
@@ -39,12 +39,14 @@ function buildInsertQuery(q) {
39
39
  const columns = keys.map(quoteIdentifier).join(", ");
40
40
  const rowPlaceholders = `(${keys.map(() => "?").join(", ")})`;
41
41
  const placeholders = rows.map(() => rowPlaceholders).join(", ");
42
- q.definition.params = rows.flatMap(
43
- (row) => keys.map((key) => row[key])
42
+ params.push(
43
+ ...rows.flatMap(
44
+ (row) => keys.map((key) => row[key])
45
+ )
44
46
  );
45
- return `INSERT INTO ${q.table.name} (${columns}) VALUES ${placeholders} RETURNING *`;
47
+ return `INSERT INTO ${q.table.name} (${columns}) VALUES ${placeholders}`;
46
48
  }
47
- function buildUpdateQuery(q) {
49
+ function buildUpdateQuery(q, params) {
48
50
  if (!q.definition?.updateValues) {
49
51
  throw new Error(`UPDATE requires values`);
50
52
  }
@@ -53,11 +55,7 @@ function buildUpdateQuery(q) {
53
55
  (key) => q.definition.updateValues[key]
54
56
  );
55
57
  keys = keys.map(quoteIdentifier);
56
- if (q.definition?.params) {
57
- q.definition.params = [...updateParams, ...q.definition.params];
58
- } else {
59
- q.definition.params = updateParams;
60
- }
58
+ params.unshift(...updateParams);
61
59
  return `UPDATE ${q.table.name} SET ${keys.map((key) => `${key} = ?`).join(", ")}`;
62
60
  }
63
61
  function buildDeleteQuery(q) {
@@ -0,0 +1,13 @@
1
+ import { Dialect } from '../table/constants.js';
2
+ import { g as AstNode, J as JoinNode } from '../index-CsVPGz2o.js';
3
+ import '../column/index.js';
4
+ import '../column/constants.js';
5
+ import '../column/types.js';
6
+ import 'bun';
7
+ import '../types.js';
8
+ import './constants.js';
9
+
10
+ declare function compileAst(dialect: Dialect | null, node: AstNode, params: unknown[]): string;
11
+ declare function compileJoin(dialect: Dialect | null, join: JoinNode, params: unknown[]): string;
12
+
13
+ export { compileAst, compileJoin };
@@ -0,0 +1,112 @@
1
+ import { Dialect } from '../table/constants.js';
2
+ import { AstType, AcceptedJoin, AcceptedOperator } from './constants.js';
3
+
4
+ // src/query/compiler.ts
5
+ function compileComparison(dialect, node, params) {
6
+ const column = node.column;
7
+ if (node.operator === AcceptedOperator.BETWEEN || node.operator === AcceptedOperator.IN) {
8
+ params.push(...node.values);
9
+ } else if (node.operator !== AcceptedOperator.IS_NULL && "value" in node) {
10
+ params.push(node.value);
11
+ }
12
+ switch (node.operator) {
13
+ case AcceptedOperator.EQ:
14
+ return `${column} = ?`;
15
+ case AcceptedOperator.NE:
16
+ return `${column} != ?`;
17
+ case AcceptedOperator.GT:
18
+ return `${column} > ?`;
19
+ case AcceptedOperator.LT:
20
+ return `${column} < ?`;
21
+ case AcceptedOperator.GTE:
22
+ return `${column} >= ?`;
23
+ case AcceptedOperator.LTE:
24
+ return `${column} <= ?`;
25
+ case AcceptedOperator.IN:
26
+ return `${column} IN (${node.values.map(() => "?").join(", ")})`;
27
+ case AcceptedOperator.LIKE:
28
+ return `${column} LIKE ?`;
29
+ case AcceptedOperator.ILIKE:
30
+ if (dialect === Dialect.POSTGRES) {
31
+ return `${column} ILIKE ?`;
32
+ }
33
+ return `LOWER(${column}) LIKE LOWER(?)`;
34
+ case AcceptedOperator.IS_NULL:
35
+ return `${column} IS NULL`;
36
+ case AcceptedOperator.BETWEEN:
37
+ return `${column} BETWEEN ? AND ?`;
38
+ case AcceptedOperator.STARTS_WITH:
39
+ return `${column} LIKE ?`;
40
+ case AcceptedOperator.ENDS_WITH:
41
+ return `${column} LIKE ?`;
42
+ case AcceptedOperator.REG_EXP: {
43
+ switch (dialect) {
44
+ case Dialect.POSTGRES:
45
+ return `${column} ~ ?`;
46
+ case Dialect.MYSQL:
47
+ return `${column} REGEXP ?`;
48
+ case Dialect.SQLITE:
49
+ return `${column} GLOB ?`;
50
+ default:
51
+ throw new Error("Operator not supported");
52
+ }
53
+ }
54
+ case AcceptedOperator.RLIKE: {
55
+ switch (dialect) {
56
+ case Dialect.POSTGRES:
57
+ return `${column} ~* ?`;
58
+ case Dialect.MYSQL:
59
+ return `${column} RLIKE ?`;
60
+ case Dialect.SQLITE:
61
+ return `${column} GLOB ?`;
62
+ default:
63
+ throw new Error("Operator not supported");
64
+ }
65
+ }
66
+ default:
67
+ throw new Error("Invalid operator");
68
+ }
69
+ }
70
+ function compileNot(dialect, node, params) {
71
+ const inner = compileAst(dialect, node.child, params);
72
+ return `NOT (${inner})`;
73
+ }
74
+ function compileGroup(dialect, node, params) {
75
+ if (!node.children.length) {
76
+ return "";
77
+ }
78
+ const compiled = node.children.map(
79
+ (child) => compileAst(dialect, child, params)
80
+ );
81
+ return `(${compiled.join(` ${node.operator} `)})`;
82
+ }
83
+ function compileAst(dialect, node, params) {
84
+ switch (node.type) {
85
+ case AstType.COMPARISON:
86
+ return compileComparison(dialect, node, params);
87
+ case AstType.GROUP:
88
+ return compileGroup(dialect, node, params);
89
+ case AstType.NOT:
90
+ return compileNot(dialect, node, params);
91
+ default:
92
+ throw new Error(`Unknown AST node type`);
93
+ }
94
+ }
95
+ function compileJoin(dialect, join, params) {
96
+ const table = join.table.name;
97
+ const alias = join.alias;
98
+ if (join.join === AcceptedJoin.CROSS || join.join === AcceptedJoin.NATURAL) {
99
+ return `${join.join} JOIN ${table} AS ${alias}`;
100
+ }
101
+ if (!join.on) {
102
+ throw new Error(`${join.join} join requires ON condition`);
103
+ }
104
+ const onSql = compileAst(
105
+ dialect,
106
+ join.on,
107
+ params
108
+ );
109
+ return `${join.join} JOIN ${table} AS ${alias} ON ${onSql}`;
110
+ }
111
+
112
+ export { compileAst, compileJoin };