linkgress-orm 0.0.1

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/database/database-client.interface.d.ts +45 -0
  4. package/dist/database/database-client.interface.d.ts.map +1 -0
  5. package/dist/database/database-client.interface.js +20 -0
  6. package/dist/database/database-client.interface.js.map +1 -0
  7. package/dist/database/index.d.ts +5 -0
  8. package/dist/database/index.d.ts.map +1 -0
  9. package/dist/database/index.js +10 -0
  10. package/dist/database/index.js.map +1 -0
  11. package/dist/database/pg-client.d.ts +30 -0
  12. package/dist/database/pg-client.d.ts.map +1 -0
  13. package/dist/database/pg-client.js +76 -0
  14. package/dist/database/pg-client.js.map +1 -0
  15. package/dist/database/postgres-client.d.ts +44 -0
  16. package/dist/database/postgres-client.d.ts.map +1 -0
  17. package/dist/database/postgres-client.js +111 -0
  18. package/dist/database/postgres-client.js.map +1 -0
  19. package/dist/database/types.d.ts +200 -0
  20. package/dist/database/types.d.ts.map +1 -0
  21. package/dist/database/types.js +8 -0
  22. package/dist/database/types.js.map +1 -0
  23. package/dist/entity/base-entity.d.ts +21 -0
  24. package/dist/entity/base-entity.d.ts.map +1 -0
  25. package/dist/entity/base-entity.js +27 -0
  26. package/dist/entity/base-entity.js.map +1 -0
  27. package/dist/entity/db-column.d.ts +61 -0
  28. package/dist/entity/db-column.d.ts.map +1 -0
  29. package/dist/entity/db-column.js +35 -0
  30. package/dist/entity/db-column.js.map +1 -0
  31. package/dist/entity/db-context.d.ts +665 -0
  32. package/dist/entity/db-context.d.ts.map +1 -0
  33. package/dist/entity/db-context.js +1463 -0
  34. package/dist/entity/db-context.js.map +1 -0
  35. package/dist/entity/entity-base.d.ts +76 -0
  36. package/dist/entity/entity-base.d.ts.map +1 -0
  37. package/dist/entity/entity-base.js +42 -0
  38. package/dist/entity/entity-base.js.map +1 -0
  39. package/dist/entity/entity-builder.d.ts +171 -0
  40. package/dist/entity/entity-builder.d.ts.map +1 -0
  41. package/dist/entity/entity-builder.js +376 -0
  42. package/dist/entity/entity-builder.js.map +1 -0
  43. package/dist/entity/model-config.d.ts +18 -0
  44. package/dist/entity/model-config.d.ts.map +1 -0
  45. package/dist/entity/model-config.js +157 -0
  46. package/dist/entity/model-config.js.map +1 -0
  47. package/dist/index.d.ts +27 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +142 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/migration/db-schema-manager.d.ts +228 -0
  52. package/dist/migration/db-schema-manager.d.ts.map +1 -0
  53. package/dist/migration/db-schema-manager.js +1055 -0
  54. package/dist/migration/db-schema-manager.js.map +1 -0
  55. package/dist/migration/enum-migrator.d.ts +29 -0
  56. package/dist/migration/enum-migrator.d.ts.map +1 -0
  57. package/dist/migration/enum-migrator.js +137 -0
  58. package/dist/migration/enum-migrator.js.map +1 -0
  59. package/dist/query/collection-strategy.factory.d.ts +16 -0
  60. package/dist/query/collection-strategy.factory.d.ts.map +1 -0
  61. package/dist/query/collection-strategy.factory.js +37 -0
  62. package/dist/query/collection-strategy.factory.js.map +1 -0
  63. package/dist/query/collection-strategy.interface.d.ts +146 -0
  64. package/dist/query/collection-strategy.interface.d.ts.map +1 -0
  65. package/dist/query/collection-strategy.interface.js +3 -0
  66. package/dist/query/collection-strategy.interface.js.map +1 -0
  67. package/dist/query/conditions.d.ts +222 -0
  68. package/dist/query/conditions.d.ts.map +1 -0
  69. package/dist/query/conditions.js +446 -0
  70. package/dist/query/conditions.js.map +1 -0
  71. package/dist/query/cte-builder.d.ts +95 -0
  72. package/dist/query/cte-builder.d.ts.map +1 -0
  73. package/dist/query/cte-builder.js +172 -0
  74. package/dist/query/cte-builder.js.map +1 -0
  75. package/dist/query/grouped-query.d.ts +186 -0
  76. package/dist/query/grouped-query.d.ts.map +1 -0
  77. package/dist/query/grouped-query.js +588 -0
  78. package/dist/query/grouped-query.js.map +1 -0
  79. package/dist/query/join-builder.d.ts +106 -0
  80. package/dist/query/join-builder.d.ts.map +1 -0
  81. package/dist/query/join-builder.js +275 -0
  82. package/dist/query/join-builder.js.map +1 -0
  83. package/dist/query/query-builder.d.ts +543 -0
  84. package/dist/query/query-builder.d.ts.map +1 -0
  85. package/dist/query/query-builder.js +2649 -0
  86. package/dist/query/query-builder.js.map +1 -0
  87. package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
  88. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
  89. package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
  90. package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
  91. package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
  92. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
  93. package/dist/query/strategies/temptable-collection-strategy.js +456 -0
  94. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
  95. package/dist/query/subquery.d.ts +152 -0
  96. package/dist/query/subquery.d.ts.map +1 -0
  97. package/dist/query/subquery.js +206 -0
  98. package/dist/query/subquery.js.map +1 -0
  99. package/dist/schema/column-builder.d.ts +127 -0
  100. package/dist/schema/column-builder.d.ts.map +1 -0
  101. package/dist/schema/column-builder.js +184 -0
  102. package/dist/schema/column-builder.js.map +1 -0
  103. package/dist/schema/inference.d.ts +26 -0
  104. package/dist/schema/inference.d.ts.map +1 -0
  105. package/dist/schema/inference.js +3 -0
  106. package/dist/schema/inference.js.map +1 -0
  107. package/dist/schema/navigation.d.ts +215 -0
  108. package/dist/schema/navigation.d.ts.map +1 -0
  109. package/dist/schema/navigation.js +233 -0
  110. package/dist/schema/navigation.js.map +1 -0
  111. package/dist/schema/row-type.d.ts +26 -0
  112. package/dist/schema/row-type.d.ts.map +1 -0
  113. package/dist/schema/row-type.js +3 -0
  114. package/dist/schema/row-type.js.map +1 -0
  115. package/dist/schema/sequence-builder.d.ts +87 -0
  116. package/dist/schema/sequence-builder.d.ts.map +1 -0
  117. package/dist/schema/sequence-builder.js +123 -0
  118. package/dist/schema/sequence-builder.js.map +1 -0
  119. package/dist/schema/table-builder.d.ts +122 -0
  120. package/dist/schema/table-builder.d.ts.map +1 -0
  121. package/dist/schema/table-builder.js +132 -0
  122. package/dist/schema/table-builder.js.map +1 -0
  123. package/dist/schema/typed-schema.d.ts +22 -0
  124. package/dist/schema/typed-schema.d.ts.map +1 -0
  125. package/dist/schema/typed-schema.js +28 -0
  126. package/dist/schema/typed-schema.js.map +1 -0
  127. package/dist/types/column-types.d.ts +20 -0
  128. package/dist/types/column-types.d.ts.map +1 -0
  129. package/dist/types/column-types.js +14 -0
  130. package/dist/types/column-types.js.map +1 -0
  131. package/dist/types/custom-types.d.ts +85 -0
  132. package/dist/types/custom-types.d.ts.map +1 -0
  133. package/dist/types/custom-types.js +132 -0
  134. package/dist/types/custom-types.js.map +1 -0
  135. package/dist/types/enum-builder.d.ts +31 -0
  136. package/dist/types/enum-builder.d.ts.map +1 -0
  137. package/dist/types/enum-builder.js +46 -0
  138. package/dist/types/enum-builder.js.map +1 -0
  139. package/dist/types/metadata.d.ts +67 -0
  140. package/dist/types/metadata.d.ts.map +1 -0
  141. package/dist/types/metadata.js +57 -0
  142. package/dist/types/metadata.js.map +1 -0
  143. package/dist/types/type-mapper.d.ts +49 -0
  144. package/dist/types/type-mapper.d.ts.map +1 -0
  145. package/dist/types/type-mapper.js +49 -0
  146. package/dist/types/type-mapper.js.map +1 -0
  147. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/query/conditions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { SelectQueryBuilder } from './query-builder';
2
+ /**
3
+ * Represents a Common Table Expression (CTE) with strong typing
4
+ */
5
+ export declare class DbCte<TColumns> {
6
+ readonly name: string;
7
+ readonly query: string;
8
+ readonly params: unknown[];
9
+ readonly columnDefs: TColumns;
10
+ readonly selectionMetadata?: Record<string, any> | undefined;
11
+ constructor(name: string, query: string, params: unknown[], columnDefs: TColumns, selectionMetadata?: Record<string, any> | undefined);
12
+ /**
13
+ * Get a typed reference to a CTE column
14
+ */
15
+ getColumn<K extends keyof TColumns>(columnName: K): TColumns[K];
16
+ }
17
+ /**
18
+ * Builder for creating Common Table Expressions (CTEs)
19
+ */
20
+ export declare class DbCteBuilder {
21
+ private ctes;
22
+ private paramOffset;
23
+ constructor();
24
+ /**
25
+ * Create a regular CTE from a query
26
+ *
27
+ * @example
28
+ * const activeUsersCte = cteBuilder.with(
29
+ * 'active_users',
30
+ * db.users
31
+ * .where(u => lt(u.id, 100))
32
+ * .select(u => ({
33
+ * userId: u.id,
34
+ * createdAt: u.createdAt,
35
+ * postCount: u.posts.count()
36
+ * }))
37
+ * );
38
+ */
39
+ with<TSelection extends Record<string, unknown>>(cteName: string, query: SelectQueryBuilder<TSelection> | {
40
+ toList: () => Promise<TSelection[]>;
41
+ }): {
42
+ cte: DbCte<TSelection>;
43
+ };
44
+ /**
45
+ * Create an aggregation CTE that groups results into a JSONB array
46
+ *
47
+ * @example
48
+ * const aggregatedCte = cteBuilder.withAggregation(
49
+ * 'aggregated_users',
50
+ * db.userAddress.select(ua => ({
51
+ * id: ua.id,
52
+ * userId: ua.userId,
53
+ * street: ua.address
54
+ * })),
55
+ * ua => ({ userId: ua.userId }),
56
+ * 'items'
57
+ * );
58
+ */
59
+ withAggregation<TSelection extends Record<string, unknown>, TKey extends Record<string, unknown>, TAlias extends string = 'items'>(cteName: string, query: SelectQueryBuilder<TSelection> | {
60
+ toList: () => Promise<TSelection[]>;
61
+ }, keySelector: (value: TSelection) => TKey, aggregationAlias?: TAlias): DbCte<TKey & {
62
+ [K in TAlias]: Array<AggregatedItemType<TSelection, TKey>>;
63
+ }>;
64
+ /**
65
+ * Get all CTEs created by this builder
66
+ */
67
+ getCtes(): DbCte<any>[];
68
+ /**
69
+ * Clear all CTEs from this builder
70
+ */
71
+ clear(): void;
72
+ /**
73
+ * Infer column types from query selection
74
+ */
75
+ private inferColumnTypes;
76
+ /**
77
+ * Create a mock item for extracting group by columns
78
+ */
79
+ private createMockItem;
80
+ }
81
+ /**
82
+ * Type helper to extract CTE column types
83
+ */
84
+ export type InferCteColumns<T> = T extends DbCte<infer TColumns> ? TColumns : never;
85
+ /**
86
+ * Type helper for aggregated items - removes the grouping keys from the selection
87
+ */
88
+ export type AggregatedItemType<TSelection extends Record<string, unknown>, TKey extends Record<string, unknown>> = {
89
+ [K in Exclude<keyof TSelection, keyof TKey>]: TSelection[K];
90
+ };
91
+ /**
92
+ * Check if a value is a CTE
93
+ */
94
+ export declare function isCte(value: any): value is DbCte<any>;
95
+ //# sourceMappingURL=cte-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cte-builder.d.ts","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGnE;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ;aAEP,IAAI,EAAE,MAAM;aACZ,KAAK,EAAE,MAAM;aACb,MAAM,EAAE,OAAO,EAAE;aACjB,UAAU,EAAE,QAAQ;aACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAJvC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EAAE,EACjB,UAAU,EAAE,QAAQ,EACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAA;IAGzD;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;CAGhE;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,WAAW,CAAa;;IAIhC;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;KAAE,GAC9E;QAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;KAAE;IA6B7B;;;;;;;;;;;;;;OAcG;IACH,eAAe,CACb,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,SAAS,MAAM,GAAG,OAAO,EAE/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;KAAE,EAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACxC,gBAAgB,CAAC,EAAE,MAAM,GACxB,KAAK,CAAC,IAAI,GAAG;SAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAAE,CAAC;IAuD/E;;OAEG;IACH,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,cAAc;CAUvB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC5B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClC;KACD,CAAC,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAErD"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DbCteBuilder = exports.DbCte = void 0;
4
+ exports.isCte = isCte;
5
+ /**
6
+ * Represents a Common Table Expression (CTE) with strong typing
7
+ */
8
+ class DbCte {
9
+ constructor(name, query, params, columnDefs, selectionMetadata) {
10
+ this.name = name;
11
+ this.query = query;
12
+ this.params = params;
13
+ this.columnDefs = columnDefs;
14
+ this.selectionMetadata = selectionMetadata;
15
+ }
16
+ /**
17
+ * Get a typed reference to a CTE column
18
+ */
19
+ getColumn(columnName) {
20
+ return columnName;
21
+ }
22
+ }
23
+ exports.DbCte = DbCte;
24
+ /**
25
+ * Builder for creating Common Table Expressions (CTEs)
26
+ */
27
+ class DbCteBuilder {
28
+ constructor() {
29
+ this.ctes = [];
30
+ this.paramOffset = 1;
31
+ }
32
+ /**
33
+ * Create a regular CTE from a query
34
+ *
35
+ * @example
36
+ * const activeUsersCte = cteBuilder.with(
37
+ * 'active_users',
38
+ * db.users
39
+ * .where(u => lt(u.id, 100))
40
+ * .select(u => ({
41
+ * userId: u.id,
42
+ * createdAt: u.createdAt,
43
+ * postCount: u.posts.count()
44
+ * }))
45
+ * );
46
+ */
47
+ with(cteName, query) {
48
+ const context = {
49
+ paramCounter: this.paramOffset,
50
+ params: [],
51
+ };
52
+ // Build the CTE query and get selection metadata
53
+ const mockRow = query.createMockRow();
54
+ const selectionResult = query.selector(mockRow);
55
+ const sql = query.buildQuery(selectionResult, {
56
+ ctes: new Map(),
57
+ cteCounter: 0,
58
+ paramCounter: context.paramCounter,
59
+ allParams: context.params,
60
+ }).sql;
61
+ // Update parameter offset for next CTE
62
+ this.paramOffset = context.paramCounter;
63
+ // Create column definitions from the selection
64
+ const columnDefs = {};
65
+ const cte = new DbCte(cteName, sql, context.params, columnDefs, selectionResult);
66
+ this.ctes.push(cte);
67
+ return { cte };
68
+ }
69
+ /**
70
+ * Create an aggregation CTE that groups results into a JSONB array
71
+ *
72
+ * @example
73
+ * const aggregatedCte = cteBuilder.withAggregation(
74
+ * 'aggregated_users',
75
+ * db.userAddress.select(ua => ({
76
+ * id: ua.id,
77
+ * userId: ua.userId,
78
+ * street: ua.address
79
+ * })),
80
+ * ua => ({ userId: ua.userId }),
81
+ * 'items'
82
+ * );
83
+ */
84
+ withAggregation(cteName, query, keySelector, aggregationAlias) {
85
+ const context = {
86
+ paramCounter: this.paramOffset,
87
+ params: [],
88
+ };
89
+ // Build the inner query
90
+ const innerSql = query.buildQuery(query.selector(query.createMockRow()), {
91
+ ctes: new Map(),
92
+ cteCounter: 0,
93
+ paramCounter: context.paramCounter,
94
+ allParams: context.params,
95
+ }).sql;
96
+ // Get group by columns
97
+ const mockItem = this.createMockItem();
98
+ const groupByResult = keySelector(mockItem);
99
+ const groupByColumns = Object.keys(groupByResult);
100
+ // Build the aggregation query
101
+ const selectColumns = groupByColumns.map(col => `"${col}"`).join(', ');
102
+ const groupByClause = groupByColumns.map(col => `"${col}"`).join(', ');
103
+ // Use provided alias or default to 'items'
104
+ const finalAggregationAlias = (aggregationAlias || 'items');
105
+ // For aggregation CTEs, we need to exclude the grouping columns from the aggregated items
106
+ // This implements AggregatedItemType<TSelection, TKey> at the SQL level
107
+ // However, getting all column names requires introspection we don't have access to here
108
+ // So we'll use jsonb_agg with to_jsonb which includes all columns
109
+ // The type system will indicate which fields should be excluded
110
+ const aggregationSql = `
111
+ SELECT ${selectColumns},
112
+ jsonb_agg(to_jsonb(t.*)) as "${finalAggregationAlias}"
113
+ FROM (${innerSql}) t
114
+ GROUP BY ${groupByClause}
115
+ `.trim();
116
+ // Update parameter offset
117
+ this.paramOffset = context.paramCounter;
118
+ // Create column definitions
119
+ const columnDefs = {};
120
+ groupByColumns.forEach(col => {
121
+ columnDefs[col] = col;
122
+ });
123
+ columnDefs[finalAggregationAlias] = finalAggregationAlias;
124
+ const cte = new DbCte(cteName, aggregationSql, context.params, columnDefs);
125
+ this.ctes.push(cte);
126
+ return cte;
127
+ }
128
+ /**
129
+ * Get all CTEs created by this builder
130
+ */
131
+ getCtes() {
132
+ return this.ctes;
133
+ }
134
+ /**
135
+ * Clear all CTEs from this builder
136
+ */
137
+ clear() {
138
+ this.ctes = [];
139
+ this.paramOffset = 1;
140
+ }
141
+ /**
142
+ * Infer column types from query selection
143
+ */
144
+ inferColumnTypes(query) {
145
+ // Try to extract selection from query
146
+ if (query.selection) {
147
+ return query.selection;
148
+ }
149
+ return {};
150
+ }
151
+ /**
152
+ * Create a mock item for extracting group by columns
153
+ */
154
+ createMockItem() {
155
+ return new Proxy({}, {
156
+ get: (target, prop) => {
157
+ if (typeof prop === 'string') {
158
+ return prop;
159
+ }
160
+ return undefined;
161
+ }
162
+ });
163
+ }
164
+ }
165
+ exports.DbCteBuilder = DbCteBuilder;
166
+ /**
167
+ * Check if a value is a CTE
168
+ */
169
+ function isCte(value) {
170
+ return value instanceof DbCte;
171
+ }
172
+ //# sourceMappingURL=cte-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cte-builder.js","sourceRoot":"","sources":["../../src/query/cte-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import { Condition, FieldRef } from './conditions';
2
+ import { TableSchema } from '../schema/table-builder';
3
+ import type { DatabaseClient } from '../database/database-client.interface';
4
+ import type { QueryExecutor } from '../entity/db-context';
5
+ import { Subquery } from './subquery';
6
+ import type { ManualJoinDefinition } from './query-builder';
7
+ /**
8
+ * Type helper to resolve FieldRef types to their value types
9
+ */
10
+ type ResolveFieldRefs<T> = T extends FieldRef<any, infer V> ? V : T extends Array<infer U> ? Array<ResolveFieldRefs<U>> : T extends object ? {
11
+ [K in keyof T]: ResolveFieldRefs<T[K]>;
12
+ } : T;
13
+ /**
14
+ * Represents a grouped item with access to the grouping key and aggregate functions
15
+ * TGroupingKey: The shape of the grouping key (e.g., { street: string })
16
+ * TOriginalRow: The original row type before grouping
17
+ */
18
+ export interface GroupedItem<TGroupingKey, TOriginalRow> {
19
+ /**
20
+ * The grouping key - contains all fields specified in groupBy
21
+ */
22
+ readonly key: ResolveFieldRefs<TGroupingKey>;
23
+ /**
24
+ * Count the number of items in this group
25
+ */
26
+ count(): number;
27
+ /**
28
+ * Sum a numeric field across all items in this group
29
+ * Returns the inferred type from the selector, or number if the type cannot be inferred
30
+ */
31
+ sum<TField>(selector: (item: TOriginalRow) => TField): TField extends FieldRef<any, infer V> ? V : TField extends number ? number : number;
32
+ /**
33
+ * Get the minimum value of a field across all items in this group
34
+ * Returns the inferred type from the selector
35
+ */
36
+ min<TField>(selector: (item: TOriginalRow) => TField): TField extends FieldRef<any, infer V> ? V : TField;
37
+ /**
38
+ * Get the maximum value of a field across all items in this group
39
+ * Returns the inferred type from the selector
40
+ */
41
+ max<TField>(selector: (item: TOriginalRow) => TField): TField extends FieldRef<any, infer V> ? V : TField;
42
+ /**
43
+ * Get the average value of a numeric field across all items in this group
44
+ * Always returns number since average is always numeric
45
+ */
46
+ avg(selector: (item: TOriginalRow) => FieldRef<any, number> | number): number;
47
+ }
48
+ /**
49
+ * Aggregate field reference - used in HAVING clauses
50
+ * Represents a field that is an aggregate function result (e.g., COUNT(*), SUM(column))
51
+ */
52
+ export interface AggregateFieldRef<TValueType = any> extends FieldRef<string, TValueType> {
53
+ readonly __isAggregate: true;
54
+ readonly __aggregateType: 'COUNT' | 'SUM' | 'MIN' | 'MAX' | 'AVG';
55
+ readonly __aggregateSelector?: (item: any) => any;
56
+ }
57
+ /**
58
+ * Grouped query builder - result of calling groupBy()
59
+ * Provides type-safe access to grouping keys and aggregate functions
60
+ */
61
+ export declare class GroupedQueryBuilder<TOriginalRow, TGroupingKey> {
62
+ private schema;
63
+ private client;
64
+ private originalSelector;
65
+ private groupingKeySelector;
66
+ private whereCond?;
67
+ private havingCond?;
68
+ private limitValue?;
69
+ private offsetValue?;
70
+ private orderByFields;
71
+ private executor?;
72
+ private manualJoins;
73
+ private joinCounter;
74
+ constructor(schema: TableSchema, client: DatabaseClient, originalSelector: (row: any) => any, groupingKeySelector: (row: TOriginalRow) => TGroupingKey, whereCond?: Condition, executor?: QueryExecutor, manualJoins?: ManualJoinDefinition[], joinCounter?: number);
75
+ /**
76
+ * Select from grouped results
77
+ * The selector receives a GroupedItem with key and aggregate functions
78
+ */
79
+ select<TSelection>(selector: (group: GroupedItem<TGroupingKey, TOriginalRow>) => TSelection): GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupingKey>;
80
+ /**
81
+ * Add HAVING condition (filter groups after aggregation)
82
+ */
83
+ having(condition: (group: GroupedItem<TGroupingKey, TOriginalRow>) => Condition): this;
84
+ /**
85
+ * Create a mock GroupedItem for type inference and condition building
86
+ */
87
+ private createMockGroupedItem;
88
+ /**
89
+ * Create mock row for the original table
90
+ */
91
+ private createMockRow;
92
+ }
93
+ /**
94
+ * Grouped select query builder - result of calling select() on a GroupedQueryBuilder
95
+ */
96
+ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupingKey> {
97
+ private schema;
98
+ private client;
99
+ private originalSelector;
100
+ private groupingKeySelector;
101
+ private resultSelector;
102
+ private whereCond?;
103
+ private havingCond?;
104
+ private limitValue?;
105
+ private offsetValue?;
106
+ private orderByFields;
107
+ private executor?;
108
+ private manualJoins;
109
+ private joinCounter;
110
+ constructor(schema: TableSchema, client: DatabaseClient, originalSelector: (row: any) => any, groupingKeySelector: (row: TOriginalRow) => TGroupingKey, resultSelector: (group: GroupedItem<TGroupingKey, TOriginalRow>) => TSelection, whereCond?: Condition, havingCond?: Condition, limit?: number, offset?: number, orderBy?: Array<{
111
+ field: string;
112
+ direction: 'ASC' | 'DESC';
113
+ }>, executor?: QueryExecutor, manualJoins?: ManualJoinDefinition[], joinCounter?: number);
114
+ /**
115
+ * Add HAVING condition (filter groups after aggregation)
116
+ */
117
+ having(condition: (group: GroupedItem<TGroupingKey, TOriginalRow>) => Condition): this;
118
+ /**
119
+ * Limit results
120
+ */
121
+ limit(count: number): this;
122
+ /**
123
+ * Offset results
124
+ */
125
+ offset(count: number): this;
126
+ /**
127
+ * Order by field(s) from the selected result
128
+ * @example
129
+ * .orderBy(p => p.colName)
130
+ * .orderBy(p => [p.colName, p.otherCol])
131
+ * .orderBy(p => [[p.colName, 'ASC'], [p.otherCol, 'DESC']])
132
+ */
133
+ orderBy(selector: (row: TSelection) => any): this;
134
+ orderBy(selector: (row: TSelection) => any[]): this;
135
+ orderBy(selector: (row: TSelection) => Array<[any, 'ASC' | 'DESC']>): this;
136
+ /**
137
+ * Execute query and return results
138
+ */
139
+ toList(): Promise<ResolveFieldRefs<TSelection>[]>;
140
+ /**
141
+ * Transform database results - convert aggregate values from strings to numbers
142
+ */
143
+ private transformResults;
144
+ /**
145
+ * Execute query and return first result or null
146
+ */
147
+ first(): Promise<ResolveFieldRefs<TSelection> | null>;
148
+ /**
149
+ * Execute query and return first result or throw
150
+ */
151
+ firstOrThrow(): Promise<ResolveFieldRefs<TSelection>>;
152
+ /**
153
+ * Convert to subquery for use in other queries
154
+ */
155
+ asSubquery<TMode extends 'scalar' | 'array' | 'table' = 'table'>(mode?: TMode): Subquery<TMode extends 'scalar' ? ResolveFieldRefs<TSelection> : TMode extends 'array' ? ResolveFieldRefs<TSelection>[] : ResolveFieldRefs<TSelection>, TMode>;
156
+ /**
157
+ * Build the SQL query for grouped results
158
+ */
159
+ private buildQuery;
160
+ /**
161
+ * Create mock row for the original table
162
+ */
163
+ private createMockRow;
164
+ /**
165
+ * Create a mock GroupedItem for type inference
166
+ */
167
+ private createMockGroupedItem;
168
+ /**
169
+ * Build HAVING condition SQL - handles aggregate field refs specially
170
+ */
171
+ private buildHavingCondition;
172
+ /**
173
+ * Transform a HAVING condition by replacing aggregate field refs with SQL fragments
174
+ */
175
+ private transformHavingCondition;
176
+ /**
177
+ * Build SQL for an aggregate field reference
178
+ */
179
+ private buildAggregateFieldSql;
180
+ /**
181
+ * Get the operator string from a condition object
182
+ */
183
+ private getOperatorForCondition;
184
+ }
185
+ export {};
186
+ //# sourceMappingURL=grouped-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouped-query.d.ts","sourceRoot":"","sources":["../../src/query/grouped-query.ts"],"names":[],"mappings":"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"}